mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-02-11 16:40:36 +08:00
fix some bugs in oc found using scan-build
This commit is contained in:
parent
b569613737
commit
e0e763f4c9
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
13
oc/oc.c
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
6
oc/rc.c
6
oc/rc.c
@ -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*
|
||||
|
Loading…
Reference in New Issue
Block a user