fix some bugs in oc found using scan-build

This commit is contained in:
Dennis Heimbigner 2012-04-29 19:17:46 +00:00
parent b569613737
commit e0e763f4c9
10 changed files with 39 additions and 29 deletions

View File

@ -29,34 +29,34 @@ ocset_curl_flags(OCstate* state)
#ifdef CURLOPT_ENCODING
if (flags->compress) {
cstat = curl_easy_setopt(curl, CURLOPT_ENCODING,"deflate, gzip");
if(cstat != CURLE_OK) goto fail;
if(cstat != CURLE_OK) goto done;
OCDBG(1,"CURLOPT_ENCODING=deflate, gzip");
}
#endif
if (flags->cookiejar || flags->cookiefile) {
cstat = curl_easy_setopt(curl, CURLOPT_COOKIESESSION, 1);
if (cstat != CURLE_OK) goto fail;
if (cstat != CURLE_OK) goto done;
OCDBG(1,"CURLOPT_COOKIESESSION=1");
}
if (flags->cookiejar) {
cstat = curl_easy_setopt(curl, CURLOPT_COOKIEJAR, flags->cookiejar);
if (cstat != CURLE_OK) goto fail;
if (cstat != CURLE_OK) goto done;
OCDBG1(1,"CURLOPT_COOKIEJAR=%s",flags->cookiejar);
}
if (flags->cookiefile) {
cstat = curl_easy_setopt(curl, CURLOPT_COOKIEFILE, flags->cookiefile);
if (cstat != CURLE_OK) goto fail;
if (cstat != CURLE_OK) goto done;
OCDBG1(1,"CURLOPT_COOKIEFILE=%s",flags->cookiefile);
}
if (flags->verbose) {
cstat = curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
if (cstat != CURLE_OK) goto fail;
if (cstat != CURLE_OK) goto done;
OCDBG1(1,"CURLOPT_VERBOSE=%ld",1L);
}
if (flags->timeout) {
cstat = curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long)flags->timeout);
if (cstat != CURLE_OK) goto fail;
if (cstat != CURLE_OK) goto done;
OCDBG1(1,"CURLOPT_TIMEOUT=%ld",1L);
}
@ -69,9 +69,8 @@ ocset_curl_flags(OCstate* state)
cstat = curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, state->error.curlerrorbuf);
OCDBG1(1,"CURLOPT_ERRORBUFFER",0);
return OC_NOERR;
fail:
return OC_ECURL;
done:
return cstat;
}
int

View File

@ -105,7 +105,7 @@ daplex(YYSTYPE* lvalp, DAPparsestate* state)
int token;
int c;
unsigned int i;
char* p=lexstate->next;
char* p;
char* tmp;
token = 0;

View File

@ -451,8 +451,9 @@ DAPparse(OCstate* conn, OCtree* tree, char* parsestring)
conn->error.message = nulldup(state->message);
tree->root = NULL;
/* Attempt to further decipher the error code */
if(strcmp(state->code,"404") == 0 /* tds returns 404 */
|| strcmp(state->code,"5") == 0) /* hyrax returns 5 */
if(state->code != NULL
&& (strcmp(state->code,"404") == 0 /* tds returns 404 */
|| strcmp(state->code,"5") == 0)) /* hyrax returns 5 */
ocerr = OC_ENOFILE;
else
ocerr = OC_EDAPSVC;

View File

@ -56,13 +56,14 @@ ocfetchurl_file(CURL* curl, char* url, FILE* stream,
/* One last thing; always try to get the last modified time */
cstat = curl_easy_setopt(curl, CURLOPT_FILETIME, (long)1);
if (cstat != CURLE_OK)
goto fail;
fetchdata.stream = stream;
fetchdata.size = 0;
cstat = curl_easy_perform(curl);
if (cstat != CURLE_OK) {
if (cstat != CURLE_OK)
goto fail;
}
if (stat == OC_NOERR) {
/* return the file size*/
@ -78,7 +79,8 @@ ocfetchurl_file(CURL* curl, char* url, FILE* stream,
}
return OCTHROW(stat);
fail: oc_log(LOGERR, "curl error: %s", curl_easy_strerror(cstat));
fail:
oc_log(LOGERR, "curl error: %s", curl_easy_strerror(cstat));
return OCTHROW(OC_ECURL);
}

13
oc/oc.c
View File

@ -453,11 +453,14 @@ oc_inq_attrstrings(OCconnection conn, OCobject node0, unsigned int i,
if(octypep) *octypep = attr->etype;
if(nvaluesp) *nvaluesp = attr->nvalues;
if(stringsp) {
size_t space = attr->nvalues * sizeof(char*);
char** strings = (space > 0?ocmalloc(space):NULL);
for(i=0;i<attr->nvalues;i++)
strings[i] = nulldup(attr->values[i]);
*stringsp = strings;
if(attr->nvalues > 0) {
size_t space = attr->nvalues * sizeof(char*);
char** strings = ocmalloc(space);
for(i=0;i<attr->nvalues;i++)
strings[i] = nulldup(attr->values[i]);
*stringsp = strings;
else
*stringsp = NULL;
}
return OC_NOERR;
}

View File

@ -1086,7 +1086,6 @@ ocxdrread(OCcontent* content, XXDR* xdrs, char* memory, size_t memsize,
}
/* Convert memory to right format */
p = (unsigned int*)memory;
switch (etype) {
case OC_Char: case OC_Byte: case OC_UByte: {
@ -1107,7 +1106,8 @@ ocxdrread(OCcontent* content, XXDR* xdrs, char* memory, size_t memsize,
}
} break;
default: break; /* already handled above */
default:
break; /* already handled above */
}
/* set cache */

View File

@ -404,6 +404,7 @@ ocextractddsinfile(OCstate* state, OCtree* tree, OCflags flags)
/* Read until we find the separator (or EOF)*/
ocbytesclear(state->packet);
rewind(tree->data.file);
bodfound = 0;
do {
char chunk[1024];
size_t count;

View File

@ -207,7 +207,7 @@ converttype(OCtype etype, char* value, char* memory)
case OC_Int64:
if(sscanf(value,"%lld",&llv) != 1) goto fail;
/*else if(iv > OC_INT64_MAX || iv < OC_INT64_MIN) goto fail;*/
*((signed long long*)memory) = (signed long long)iv;
*((signed long long*)memory) = (signed long long)llv;
break;
case OC_UInt64:
if(sscanf(value,"%llu",&ullv) != 1) goto fail;
@ -662,7 +662,8 @@ occomputeskipdatar(OCstate* state, OCnode* xnode, ocoffset_t offset)
OCerror stat = OC_NOERR;
int i,nfields;
int scalar = 0;
ocoffset_t instancesize, totalsize;
ocoffset_t instancesize = 0;
ocoffset_t totalsize = 0;
scalar = (xnode->array.rank == 0 ? 1 : 0);
@ -703,7 +704,8 @@ occomputeskipdatar(OCstate* state, OCnode* xnode, ocoffset_t offset)
totalsize += 2*XDRUNIT; /* overhead is double count */
break;
default: OCPANIC("unexpected etype"); /* better not happen */
default:
OCPANIC("unexpected etype"); /* better not happen */
}
break;
@ -746,6 +748,7 @@ occomputeskipdatar(OCstate* state, OCnode* xnode, ocoffset_t offset)
default: OCPANIC("unexpected octype"); /* better not happen */
}
xnode->skip.offset = offset;
xnode->skip.instancesize = instancesize;
xnode->skip.totalsize = totalsize;

View File

@ -379,7 +379,8 @@ ocuribuild(OCURI* duri, const char* prefix, const char* suffix, int flags)
strcat(newuri,duri->params);
strcat(newuri,"]");
}
strcat(newuri,duri->protocol);
if(duri->protocol != NULL)
strcat(newuri,duri->protocol);
strcat(newuri,"://");
if(withuserpwd) {
strcat(newuri,duri->user);

View File

@ -168,7 +168,8 @@ parseproxy(OCstate* state, char* v)
host_pos = strstr(v, "http://");
if (host_pos)
host_pos += strlen("http://");
else
host_pos = v;
port_pos = strchr(host_pos, ':');
if (port_pos) {
int host_len;
@ -479,8 +480,7 @@ ocdodsrc_process(OCstate* state)
done:
if(url != NULL) free(url);
return OC_NOERR;
return stat;
}
char*