strncpy warnings fixed: stringop-truncation and stringop-overflow

This commit is contained in:
Olof Hagsand 2020-11-17 07:35:50 -06:00
parent 4eee00101c
commit a2bef12ce0
4 changed files with 33 additions and 20 deletions

View file

@ -648,14 +648,14 @@ compare_xmls(cxobj *xc1,
FILE *f; FILE *f;
char filename1[MAXPATHLEN]; char filename1[MAXPATHLEN];
char filename2[MAXPATHLEN]; char filename2[MAXPATHLEN];
char cmd[MAXPATHLEN];
int retval = -1; int retval = -1;
cxobj *xc; cxobj *xc;
cbuf *cb = NULL;
snprintf(filename1, sizeof(filename1), "/tmp/cliconXXXXXX"); snprintf(filename1, sizeof(filename1), "/tmp/cliconXXXXXX");
snprintf(filename2, sizeof(filename2), "/tmp/cliconXXXXXX"); snprintf(filename2, sizeof(filename2), "/tmp/cliconXXXXXX");
if ((fd = mkstemp(filename1)) < 0){ if ((fd = mkstemp(filename1)) < 0){
clicon_err(OE_UNDEF, errno, "tmpfile: %s", strerror (errno)); clicon_err(OE_UNDEF, errno, "tmpfile");
goto done; goto done;
} }
if ((f = fdopen(fd, "w")) == NULL) if ((f = fdopen(fd, "w")) == NULL)
@ -687,12 +687,19 @@ compare_xmls(cxobj *xc1,
fclose(f); fclose(f);
close(fd); close(fd);
snprintf(cmd, sizeof(cmd), "/usr/bin/diff -dU 1 %s %s | grep -v @@ | sed 1,2d", filename1, filename2); if ((cb = cbuf_new()) == NULL){
if (system(cmd) < 0) clicon_err(OE_CFG, errno, "cbuf_new");
goto done;
}
cprintf(cb, "/usr/bin/diff -dU 1 %s %s | grep -v @@ | sed 1,2d",
filename1, filename2);
if (system(cbuf_get(cb)) < 0)
goto done; goto done;
retval = 0; retval = 0;
done: done:
if (cb)
cbuf_free(cb);
unlink(filename1); unlink(filename1);
unlink(filename2); unlink(filename2);
return retval; return retval;

View file

@ -80,7 +80,7 @@ static inline char * strdup4(char *str)
len = align4(strlen(str)+1); len = align4(strlen(str)+1);
if ((dup = (char*) malloc(len)) == NULL) if ((dup = (char*) malloc(len)) == NULL)
return NULL; return NULL;
strncpy(dup, str, len); memcpy(dup, str, strlen(str)+1);
return dup; return dup;
} }

View file

@ -224,7 +224,7 @@ clicon_err_save(void)
return NULL; return NULL;
es->es_errno = clicon_errno; es->es_errno = clicon_errno;
es->es_suberrno = clicon_suberrno; es->es_suberrno = clicon_suberrno;
strncpy(es->es_reason, clicon_err_reason, ERR_STRLEN-1); strncpy(es->es_reason, clicon_err_reason, ERR_STRLEN);
return (void*)es; return (void*)es;
} }
@ -238,7 +238,7 @@ clicon_err_restore(void* handle)
if ((es = (struct err_state *)handle) != NULL){ if ((es = (struct err_state *)handle) != NULL){
clicon_errno = es->es_errno; clicon_errno = es->es_errno;
clicon_suberrno = es->es_suberrno; clicon_suberrno = es->es_suberrno;
strncpy(clicon_err_reason, es->es_reason, ERR_STRLEN-1); strncpy(clicon_err_reason, es->es_reason, ERR_STRLEN);
free(es); free(es);
} }
return 0; return 0;

View file

@ -292,26 +292,32 @@ atomicio(ssize_t (*fn) (int, void *, size_t),
static int static int
msg_dump(struct clicon_msg *msg) msg_dump(struct clicon_msg *msg)
{ {
int i; int retval = -1;
char buf[9*8+1]; cbuf *cb = NULL;
char buf2[9*8+1]; int i;
memset(buf2, 0, sizeof(buf2)); if ((cb = cbuf_new()) == NULL){
snprintf(buf2, sizeof(buf2), "%s:", __FUNCTION__); clicon_err(OE_CFG, errno, "cbuf_new");
goto done;
}
cprintf(cb, "%s:", __FUNCTION__);
for (i=0; i<ntohl(msg->op_len); i++){ for (i=0; i<ntohl(msg->op_len); i++){
snprintf(buf, sizeof(buf), "%s%02x", buf2, ((char*)msg)[i]&0xff); cprintf(cb, "%02x", ((char*)msg)[i]&0xff);
if ((i+1)%32==0){ if ((i+1)%32==0){
clicon_debug(2, "%s", buf); clicon_debug(2, "%s", cbuf_get(cb));
snprintf(buf, sizeof(buf), "%s:", __FUNCTION__); cbuf_reset(cb);
cprintf(cb, "%s:", __FUNCTION__);
} }
else else
if ((i+1)%4==0) if ((i+1)%4==0)
snprintf(buf, sizeof(buf), "%s ", buf2); cprintf(cb, " ");
strncpy(buf2, buf, sizeof(buf2));
} }
if (i%32) clicon_debug(2, "%s", cbuf_get(cb));
clicon_debug(2, "%s", buf); retval = 0;
return 0; done:
if (cb)
cbuf_free(cb);
return retval;
} }
/*! Send a CLICON netconf message /*! Send a CLICON netconf message