Fixed usage of uninitialized memory, thax to valgrind

This commit is contained in:
Andreas Eversberg 2017-10-31 06:16:09 +01:00
parent 155d3b5a1d
commit cdca6a7135
5 changed files with 19 additions and 8 deletions

View File

@ -45,20 +45,22 @@ const char *numberrize_callerinfo(const char *string, int ntype, const char *nat
case INFO_NTYPE_INTERNATIONAL: case INFO_NTYPE_INTERNATIONAL:
strcpy(result, international); strcpy(result, international);
strncat(result, string, sizeof(result)-strlen(result)-1); strncat(result, string, sizeof(result)-1);
result[sizeof(result)-1] = '\0'; result[sizeof(result)-1] = '\0';
return(result); return(result);
break; break;
case INFO_NTYPE_NATIONAL: case INFO_NTYPE_NATIONAL:
strcpy(result, national); strcpy(result, national);
strncat(result, string, sizeof(result)-strlen(result)-1); strncat(result, string, sizeof(result)-1);
result[sizeof(result)-1] = '\0'; result[sizeof(result)-1] = '\0';
return(result); return(result);
break; break;
default: default:
return(string); strncpy(result, string, sizeof(result)-1);
result[sizeof(result)-1] = '\0';
return(result);
} }
} }

View File

@ -405,6 +405,8 @@ static int _bchannel_create(struct mISDNport *mISDNport, int i)
int ret; int ret;
struct sockaddr_mISDN addr; struct sockaddr_mISDN addr;
memset(&addr, 0, sizeof(addr));
if (mISDNport->b_sock[i].inuse) { if (mISDNport->b_sock[i].inuse) {
PERROR("Error: Socket already created for index %d\n", i); PERROR("Error: Socket already created for index %d\n", i);
return(0); return(0);
@ -1817,6 +1819,8 @@ int mISDN_getportbyname(int sock, int cnt, char *portname)
struct mISDN_devinfo devinfo; struct mISDN_devinfo devinfo;
int port = 0, ret; int port = 0, ret;
memset(&devinfo, 0, sizeof(devinfo));
/* resolve name */ /* resolve name */
while (port < cnt) { while (port < cnt) {
devinfo.id = port; devinfo.id = port;
@ -1892,6 +1896,8 @@ struct mISDNport *mISDNport_open(struct interface_port *ifport)
struct mISDN_devinfo devinfo; struct mISDN_devinfo devinfo;
unsigned int protocol, prop; unsigned int protocol, prop;
memset(&devinfo, 0, sizeof(devinfo));
/* check port counts */ /* check port counts */
ret = ioctl(mISDNsocket, IMGETCOUNT, &cnt); ret = ioctl(mISDNsocket, IMGETCOUNT, &cnt);
if (ret < 0) { if (ret < 0) {

View File

@ -115,6 +115,8 @@ static inline char *_getline(char *buffer, int size, FILE *fp)
return buffer; return buffer;
if (buffer[strlen(buffer)-1] == '\n') if (buffer[strlen(buffer)-1] == '\n')
buffer[strlen(buffer)-1] = '\0'; buffer[strlen(buffer)-1] = '\0';
if (!buffer[0])
return buffer;
if (buffer[strlen(buffer)-1] == '\r') if (buffer[strlen(buffer)-1] == '\r')
buffer[strlen(buffer)-1] = '\0'; buffer[strlen(buffer)-1] = '\0';
return buffer; return buffer;

10
main.c
View File

@ -549,16 +549,16 @@ free:
debug_count++; debug_count++;
join_free(); join_free();
/* free interfaces */
if (interface_first)
free_interfaces(interface_first);
interface_first = NULL;
#ifdef WITH_MISDN #ifdef WITH_MISDN
/* close isdn ports */ /* close isdn ports */
mISDNport_close_all(); mISDNport_close_all();
#endif #endif
/* free interfaces */
if (interface_first)
free_interfaces(interface_first);
interface_first = NULL;
/* flush messages */ /* flush messages */
debug_count++; debug_count++;
i = 0; i = 0;

View File

@ -768,6 +768,7 @@ int Port::open_record(int type, int vbox, int skip, char *extension, int anon_ig
case CODEC_MONO: case CODEC_MONO:
case CODEC_STEREO: case CODEC_STEREO:
case CODEC_8BIT: case CODEC_8BIT:
memset(&dummyheader, 0, sizeof(dummyheader));
ret = fwrite(dummyheader, sizeof(dummyheader), 1, p_record); ret = fwrite(dummyheader, sizeof(dummyheader), 1, p_record);
break; break;