From 5f08b2170ac705f7bf7f0e3ae65dccbc66e78817 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Tue, 6 Apr 2004 13:26:56 +0000 Subject: [PATCH] make test commands more crash resistant --- src/db/dbTest.c | 59 +++++++++++++++++++++++++++++++++++++++--------- src/db/db_test.c | 6 +++++ 2 files changed, 54 insertions(+), 11 deletions(-) diff --git a/src/db/dbTest.c b/src/db/dbTest.c index 4cc2b5b2d..3eb4dfd88 100644 --- a/src/db/dbTest.c +++ b/src/db/dbTest.c @@ -76,9 +76,17 @@ long epicsShareAPI dba(char*pname) DBADDR addr; long status; + if (pname==0 || *pname==0) { + printf("\nusage \"pv name\"\n"); + return(1); + } status=dbNameToAddr(pname,&addr); + if(status) { + printf("dbNameToAddr failed\n"); + return 0; + } printDbAddr(status,&addr); - return(status); + return 0; } long epicsShareAPI dbl(char *precordTypename,char *filename,char *fields) @@ -258,6 +266,10 @@ long epicsShareAPI dbgrep(char *pmask) long status; char *pname; + if (pmask==0 || *pmask==0 ) { + printf("\nusage \"reg\"\n"); + return(1); + } if(!pdbbase) { fprintf(stderr,"no database has been loaded\n"); return(0); @@ -291,6 +303,10 @@ long epicsShareAPI dbgf(char *pname) int tab_size; tab_size = 10; + if (pname==0 || *pname==0) { + printf("\nusage \"pv name\"\n"); + return(1); + } status=dbNameToAddr(pname,&addr); if(status) { errMessage(status," dbNameToAddr failed"); @@ -320,6 +336,10 @@ long epicsShareAPI dbpf(char *pname,char *pvalue) DBADDR addr; long status; + if (pname==0 || *pname==0) { + printf("\nusage \"pv name\" \"value\"\n"); + return(1); + } /* make sure value was passed*/ if(pvalue==0) { errMessage(0L,"No value was specified"); @@ -358,8 +378,15 @@ long epicsShareAPI dbpr(char *pname,int interest_level) char *pmsg; int tab_size; - if (pname == NULL) - return(0); + if (pname==0 || *pname==0) { + printf("\nusage \"pv name\"\n"); + return(1); + } + status=dbNameToAddr(pname,&addr); + if(status) { + printf("dbNameToAddr failed\n"); + return 0; + } pmsg = pMsgBuff->message; tab_size = 20; @@ -381,12 +408,14 @@ long epicsShareAPI dbtr(char *pname) long status; struct dbCommon *precord; - if(pname == NULL) - return 0; + if (pname==0 || *pname==0) { + printf("\nusage \"pv name\"\n"); + return(1); + } status=dbNameToAddr(pname,&addr); if(status) { - errMessage(status," dbNameToAddr failed"); - return(status); + printf("dbNameToAddr failed\n"); + return 0; } precord=(struct dbCommon*)(addr.precord); if (precord->pact) { @@ -421,10 +450,14 @@ long epicsShareAPI dbtgf(char *pname) tab_size = 10; + if (pname==0 || *pname==0) { + printf("\nusage \"pv name\"\n"); + return(1); + } status=dbNameToAddr(pname,&addr); if(status) { - errMessage(status," dbNameToAddr failed"); - return(status); + printf("dbNameToAddr failed\n"); + return 0; } /* try all options first */ req_options=0xffffffff; @@ -504,10 +537,14 @@ long epicsShareAPI dbtpf(char *pname,char *pvalue) tab_size = 10; + if (pname==0 || *pname==0) { + printf("\nusage \"pv name\"\n"); + return(1); + } status=dbNameToAddr(pname,&addr); if(status) { - errMessage(status," dbNameToAddr failed"); - return(status); + printf("dbNameToAddr failed\n"); + return 0; } /* DBR_STRING */ status=dbPutField(&addr,DBR_STRING,pvalue,1L); diff --git a/src/db/db_test.c b/src/db/db_test.c index f9abdc9da..c6f4404ac 100644 --- a/src/db/db_test.c +++ b/src/db/db_test.c @@ -657,6 +657,12 @@ int epicsShareAPI tpn(char *pname,char *pvalue) char *psavevalue; int len; + if (pname==0 || pvalue==0 + || ((*pname < ' ') || (*pname > 'z')) + || ((*pvalue < ' ') || (*pvalue > 'z'))){ + printf("\nusage \"pv name\",\"value\"\n"); + return(1); + } len = strlen(pvalue); /*allocate space for value immediately following DBADDR*/ pdbaddr = calloc(1,sizeof(struct dbAddr) + len+1);