diff options
Diffstat (limited to 'security/pad/files/patch-pad.c')
-rw-r--r-- | security/pad/files/patch-pad.c | 218 |
1 files changed, 0 insertions, 218 deletions
diff --git a/security/pad/files/patch-pad.c b/security/pad/files/patch-pad.c deleted file mode 100644 index 728e3fc1ce78..000000000000 --- a/security/pad/files/patch-pad.c +++ /dev/null @@ -1,218 +0,0 @@ ---- pad.c.orig Sun Jul 23 09:14:10 2000 -+++ pad.c Wed Oct 15 06:43:08 2003 -@@ -31,17 +31,17 @@ - #include "pad.h" - #include "md5.h" - --int main(argc, argv) -- int argc; -- char **argv; --{ -- char *ifname[256], *ofname[256]; /* Names of files */ -- FILE *ifp[256], *ofp[256]; /* file pointers themselves */ -+int main (int argc, char *argv[]) { -+ -+ char *ifname[256]; /* array of input file names */ -+ char *ofname[256][FILENAME_MAX]; /* array of temp. output file names */ -+ FILE *ifp[256]; -+ int ofp[256]; - struct md5_ctx context[256]; /* md5 contexts */ - unsigned char digest[256][16]; /* md5 digests */ - unsigned char currentbyte, readbyte; /* just a place to put new bytes */ - char *outputname=NULL; /* output file name */ -- char buf[256]; /* temporary string space */ -+ char buf[FILENAME_MAX]; /* temporary string space */ - int defined_output=0, lastout, rands=-1, i, j; /* misc ints */ - unsigned long bytecount=0, bytelimit=0; /* to limit/expand the filesize */ - -@@ -151,42 +151,42 @@ - { - if ((j != filesize(ifp[i])) && (i != 0)) - { -- fprintf(stderr, "Warning: Input files sizes differ. Output will match the size of the smallest input.\n"); -+ fprintf(stderr, "Warning: sizes of input files differ. Unless -s option was given,\noutput will match the size of the smallest input.\n"); - break; - } - j=filesize(ifp[i]); - } - - /* And now to figure out the names of our output files... */ -- ofname[0] = NULL; -+ ofname[0][0] = (char)0; - for (i=0; i<rands; i++) - { -- ofname[i] = tempnam("./", "pad"); /* if tmpnam doesn't like "./" and starts -- giving us /tmp/, this could be a -- problem later on when renaming */ -- ofname[i+1] = NULL; -- } -- -- if (defined_output) -- ofname[i] = outputname; -- else -- ofname[i] = tempnam("./", "pad"); -- lastout=i; -- ofname[i+1] = NULL; -- -- -- /* Open the output files for writing */ -- for (i=0; ofname[i] != NULL; i++) -- { -- if ((ofp[i]=fopen(ofname[i], "w"))==NULL) -- { -+ (void) strlcpy ((char*)ofname[i], "pad.XXXXXX", sizeof(ofname[i])); -+ ofp[i] = mkstemp ((char*)ofname[i]); -+ if (ofp[i] == -1) { // couldn't create file, just bail... - fprintf(stderr,"Error opening %s: %s\n", ofname[i], strerror(errno)); - exit(1); - } -- ofp[i+1] = NULL; -+ ofname[i+1][0] = (char)0; /* clear next name */ -+ ofp[i+1] = -1; /* clear next fd */ -+ } // for i -+ -+ // deal with the final file... -+ (void) strlcpy ((char*)ofname[i], "pad.XXXXXX", sizeof(ofname[i])); -+ ofp[i] = mkstemp ((char*)ofname[i]); -+ if (ofp[i] == -1) { // couldn't create file, just bail... -+ fprintf(stderr,"Error opening %s: %s\n", ofname[i], strerror(errno)); -+ exit(1); - } -+ if (defined_output) { -+ (void) rename ((char*)ofname[i], outputname); -+ (void) strlcpy ((char*)ofname[i], outputname, sizeof(ofname[i])); -+ } -+ lastout = i; -+ ofname[i+1][0] = (char)0; /* clear next name */ -+ ofp[i+1] = -1; /* clear next fd */ - -- for (i=0; ofp[i] != NULL; i++) -+ for (i=0; ofp[i] != -1; i++) - MD5_start(&context[i]); /* start calculating md5 for each output file */ - - /* This while() is the heart of the program - the read/write loop */ -@@ -203,12 +203,12 @@ - { - RAND_bytes(&readbyte, 1); - MD5_feed(&context[j], readbyte); -- fputc(readbyte, ofp[j]); -+ (void) write (ofp[j], (void*) &readbyte, 1); - currentbyte=currentbyte^readbyte; - } - } - MD5_feed(&context[lastout], currentbyte); -- fputc(currentbyte, ofp[lastout]); -+ (void) write (ofp[lastout], (void *) ¤tbyte, 1); - bytecount++; - if ((bytelimit && (bytecount == bytelimit))) - { /* user's -s flag limited us to this size - we're done */ -@@ -227,16 +227,16 @@ - { - RAND_bytes(&readbyte, 1); - MD5_feed(&context[j], readbyte); -- fputc(readbyte, ofp[j]); -+ (void *) write (ofp[j], (void *) &readbyte, 1); - } - bytecount++; - } - } - - /* Close all outputs, tell MD5 processor they're finished */ -- for (i=0; ofp[i] != NULL; i++) -+ for (i=0; ofp[i] != -1; i++) - { -- fclose(ofp[i]); -+ (void) close(ofp[i]); - MD5_stop(&context[i], digest[i]); - } - -@@ -247,20 +247,24 @@ - } - - /* Rename output files to match their md5-sums */ -- for (i=0; ofname[i] != NULL; i++) -+ for (i=0; ofname[i][0] != (char)0; i++) - { -- if ((defined_output) && (lastout == i)) -- sprintf(buf, outputname); -- else -- sprintf(buf, "pad-md5-%s.dat", hexize(digest[i])); -- -- if (rename(ofname[i], buf)) /* note: no renaming across filesystems */ -- fprintf(stderr, "Error renaming: %s\n", strerror(errno)); -- else -+ if ((defined_output) && (lastout == i)) { -+ snprintf(buf, sizeof(buf), outputname); -+ } else { -+ snprintf(buf, sizeof(buf), "pad-md5-%s.dat", hexize(digest[i])); -+ } -+ if (rename((char *)ofname[i], buf)) { /* note: no renaming across filesystems */ -+ fprintf (stderr, -+ "Error renaming file: %s (%s -> %s)\n", -+ strerror(errno), ofname[i], buf -+ ); -+ } else { - fprintf(stderr, "Wrote %s\n", buf); -- } -+ } -+ } // for i - exit(0); --} -+} // main() - - /* Return size of fp passed */ - long filesize(FILE *fp) -@@ -277,24 +281,24 @@ - /* print out the help message */ - void printhelp() - { -- fprintf(stderr, "Usage: pad [options] [input files] -- --options: -- -- -r [num] - Pad will XOR in [num] pads generated from random data. if this -- is ommited, pad will use either 1 or 0 random pads, depending on -- if there is only one input file or more than one, respectively. -- -- -o [output] - The result of all the XOR operations will be stored in this -- file. If [output] is ommitted, pad will name the file according -- to its MD5-sum, along with the rest of the random pads. -- -- -s [size] - The output data will be [size] bytes. If this is less than the -- smallest input file, the output will be clipped to match, if it -- is larger, random data will be appended to the end. -- -- -h - Show usage. -- -+ fprintf(stderr, "Usage: pad [options] [input files]\n\ -+\n\ -+options:\n\ -+\n\ -+ -r [num] - Pad will XOR in [num] pads generated from random data. if this\n\ -+ is omitted, pad will use either 1 or 0 random pads, depending on\n\ -+ if there is only one input file or more than one, respectively.\n\ -+\n\ -+ -o [output] - The result of all the XOR operations will be stored in this\n\ -+ file. If [output] is omitted, pad will name the file according\n\ -+ to its MD5-sum, along with the rest of the random pads.\n\ -+\n\ -+ -s [size] - The output data will be [size] bytes. If this is less than the\n\ -+ smallest input file, the output will be clipped to match, if it\n\ -+ is larger, random data will be appended to the end.\n\ -+\n\ -+ -h - Show usage.\n\ -+\n\ - "); - } - -@@ -325,8 +329,8 @@ - buf[0] = '\0'; - for ( j=0 ; j<16 ; j++ ) - { -- sprintf(buf, "%s%c", buf, (hexdigits[digest[j]>>4])); -- sprintf(buf, "%s%c", buf, (hexdigits[digest[j]&0xf])); -+ snprintf(buf, sizeof(buf), "%s%c", buf, (hexdigits[digest[j]>>4])); -+ snprintf(buf, sizeof(buf), "%s%c", buf, (hexdigits[digest[j]&0xf])); - } - return((char *)strdup(buf)); - } |