Index: aesget.c =================================================================== --- aesget.c (revision 2119) +++ aesget.c (revision 2120) @@ -91,6 +91,7 @@ char * infile; int keysize, op; + size_t len; keysize = 128; /* default to 128 bit keys */ progname= argv[0]; @@ -101,11 +102,12 @@ if (op == -1) break; switch (op) { case 'k': /* keyfile */ - if ((infile = (char *)malloc(strlen(optarg) + 1)) == NULL) { + len = strlen(optarg); + if ((infile = (char *)malloc(len + 1)) == NULL) { fprintf(stderr, "malloc failed.\n"); exit(1); } - strcpy(infile, optarg); + snprintf(infile, len + 1, "%s", optarg); break; case 's': keysize = atoi(optarg); Index: dstring.c =================================================================== --- dstring.c (revision 2119) +++ dstring.c (revision 2120) @@ -79,9 +79,9 @@ free(buffer); return NULL; /* sorry, could not malloc ! */ } - result=strcpy(retvalue,buffer); + snprintf(retvalue, newlen + 1, "%s", buffer); free(buffer); - return result; + return retvalue; } @@ -172,17 +172,19 @@ static char *d_ltrim(char *src) { char *dest; char *walkptr; + size_t len; walkptr=src; while (*walkptr && isspace(*walkptr)) { walkptr++; } - dest=(char *)malloc(strlen(walkptr)+1); + len = strlen(walkptr); + dest=(char *)malloc(len + 1); if (!dest) { return NULL; /* sorry, out of memory! */ } - strcpy(dest,walkptr); /* copy the string */ + snprintf(dest, len + 1, "%s", walkptr); return dest; /* and return! */ } @@ -197,7 +199,7 @@ len=strlen(src); dest=(char *)malloc(len+1); if (!dest) return NULL; /* sorry, out of memory! */ - strcpy(dest,src); /* we malloc same amount of space :-( */ + snprintf(dest, len + 1, "%s", src); if (!*dest) { return dest; /* empty string! */ @@ -241,7 +243,6 @@ /* Duplicate a string, malloc'ing the buffer with it. */ char *d_dup(char *str) { char *buffer; - char *result; int newlen; newlen=strlen(str); @@ -249,15 +250,14 @@ if (!buffer) { return NULL; } - result=strcpy(buffer,str); - return result; + snprintf(buffer, newlen + 1, "%s", str); + return buffer; } char *d_cat(char *str1, char *str2) { int len1; int len2; char *buffer; - char *result; len1=strlen(str1); len2=strlen(str2); @@ -266,10 +266,8 @@ return NULL; /* Out-of-memory error */ } - result=strcpy(buffer,str1); /* do the first copy */ - result=strcat(buffer,str2); /* do the second. */ - - return result; /* and return the result! */ + snprintf(buffer, len1 + len2 + 1, "%s%s", str1, str2); + return buffer; /* and return the result! */ } /* split line into two pieces. */ Index: aescrypt.c =================================================================== --- aescrypt.c (revision 2119) +++ aescrypt.c (revision 2120) @@ -110,6 +110,7 @@ char * infile; int keysize, op; + size_t len; keysize = 128; /* default to 128 bit keys */ progname = argv[0]; infile = NULL; @@ -118,11 +119,12 @@ if (op == -1) break; switch (op) { case 'k': /* keyfile */ - if ((infile = (char *)malloc(strlen(optarg) + 1)) == NULL) { + len = strlen(optarg); + if ((infile = (char *)malloc(len + 1)) == NULL) { fprintf(stderr, "malloc failed.\n"); exit(1); } - strcpy(infile, optarg); + snprintf(infile, len + 1, "%s", optarg); break; case 's': keysize = atoi(optarg);