Os consertos (patches) abaixo corrigem alguns problemas menores do PGP versão 2.6.3(i). As mudanças mais importantes são:
*** $(SRC)/pgp263i.orig/src/charset.c Wed Jan 10 15:18:41 1996 --- charset.c Sun Feb 4 16:32:01 1996 *************** *** 259,265 **** /* End of Russian section */ #ifndef DEFAULT_CSET ! #if defined(MSDOS) #define DEFAULT_CSET "cp850" #elif defined(NEXT) #define DEFAULT_CSET "next" --- 259,265 ---- /* End of Russian section */ #ifndef DEFAULT_CSET ! #if defined(MSDOS) || defined(OS2) #define DEFAULT_CSET "cp850" #elif defined(NEXT) #define DEFAULT_CSET "next" *** $(SRC)/pgp263i.orig/src/fileio.c Sat Jan 6 20:45:50 1996 --- fileio.c Mon Mar 4 11:14:45 1996 *************** *** 590,605 **** char *buildsysfilename(char *result, char *fname) { - buildfilename(result, fname); #ifdef PGP_SYSTEM_DIR - if (file_exists(result)) - return result; strcpy(result, PGP_SYSTEM_DIR); strcat(result, fname); if (file_exists(result)) return result; - buildfilename(result, fname); /* Put name back for error */ #endif return result; } --- 590,602 ---- char *buildsysfilename(char *result, char *fname) { #ifdef PGP_SYSTEM_DIR strcpy(result, PGP_SYSTEM_DIR); strcat(result, fname); if (file_exists(result)) return result; #endif + buildfilename(result, fname); /* Put name back for error */ return result; } *************** *** 1044,1059 **** c = *bufptr++; if (c == '\n' || c == '\r') lfctr=0; ! else /* allow BEL BS HT LF VT FF CR EOF control characters */ { #ifdef EBCDIC ! if (iscntrl(c) && c!=BEL && c!=BS && c!=HT && c!=LF && c!=VT && c!=FF && c!=CR && c!=EOF) #else ! if (c < '\007' || (c > '\r' && c < ' ' && c != '\032')) #endif return FALSE; /* not a text file */ lfctr++; ! if (lfctr>132) return FALSE; /* line too long. Not a text file*/ } } return TRUE; --- 1041,1056 ---- c = *bufptr++; if (c == '\n' || c == '\r') lfctr=0; ! else /* allow BEL BS HT LF VT FF CR EOF ESC control characters */ { #ifdef EBCDIC ! if (iscntrl(c) && c!=BEL && c!=BS && c!=HT && c!=LF && c!=VT && c!=FF && c!=CR && c!=EOF && c!=ESC) #else ! if (c < '\007' || (c > '\r' && c < ' ' && c != '\032' && c != '\033')) #endif return FALSE; /* not a text file */ lfctr++; ! /* if (lfctr>132) return FALSE; /* line too long. Not a text file */ } } return TRUE; *** $(SRC)/pgp263i.orig/src/keymaint.c Tue Jan 2 15:12:59 1996 --- keymaint.c Sat Feb 17 15:04:52 1996 *************** *** 118,124 **** static void maint_init_mem(void); static void maint_release_mem(void); static VOID *allocn(int size); - static char *store_str(char *str); static VOID *allocbuf(int size); static void freebufpool(void); static void compute_legit(struct userid *id); --- 118,123 ---- *************** *** 1400,1406 **** #define HASH_ALLOC (ALLOC_UNIT / sizeof(struct hashent)) - static char *store_str(char *str); static VOID *allocbuf(int size); static void freebufpool(); --- 1399,1404 ---- *************** *** 1574,1580 **** /* * store_str does the same as strdup(), but allocates memory with allocbuf() */ ! static char * store_str(char *str) { int size = strlen(str) + 1; --- 1572,1578 ---- /* * store_str does the same as strdup(), but allocates memory with allocbuf() */ ! char * store_str(char *str) { int size = strlen(str) + 1; *** $(SRC)/pgp263i.orig/src/keymaint.h Sun Oct 22 15:55:01 1995 --- keymaint.h Sat Feb 17 14:34:02 1996 *************** *** 46,51 **** --- 46,52 ---- void endkrent(void); int init_userhash(void); + char *store_str(char *str); extern char trust_lst[8][16]; *** $(SRC)/pgp263i.orig/src/keymgmt.c Mon Jan 8 13:05:09 1996 --- keymgmt.c Sat Feb 17 15:40:33 1996 *************** *** 1096,1102 **** if (++guesses > 3) hidekey = 0; else ! hidekey = (GetHashedPassPhrase(ideakey, 1) > 0); /* * We've already tried the null password - interpret * a null string as "I dunno". --- 1096,1102 ---- if (++guesses > 3) hidekey = 0; else ! hidekey = (GetHashedPassPhrase((char *)ideakey, 1) > 0); /* * We've already tried the null password - interpret * a null string as "I dunno". *************** *** 2538,2544 **** fprintf(pgpout, LANG("\nDo you want to change your pass phrase (y/N)? ")); if (getyesno('n')) { /* user said yes */ ! hidekey = (GetHashedPassPhrase((byte *) ideakey, 2) > 0); changed = TRUE; } if (!changed) { --- 2538,2544 ---- fprintf(pgpout, LANG("\nDo you want to change your pass phrase (y/N)? ")); if (getyesno('n')) { /* user said yes */ ! hidekey = (GetHashedPassPhrase((char *)ideakey, 2) > 0); changed = TRUE; } if (!changed) { *************** *** 2805,2811 **** fputs(LANG("\nYou need a pass phrase to protect your RSA secret key.\n\ Your pass phrase can be any sentence or phrase and may have many\n\ words, spaces, punctuation, or any other printable characters.\n"), pgpout); ! hidekey = (GetHashedPassPhrase(ideakey, 2) > 0); /* init CFB IDEA key */ #ifdef MACTC5 if (Abort) --- 2805,2811 ---- fputs(LANG("\nYou need a pass phrase to protect your RSA secret key.\n\ Your pass phrase can be any sentence or phrase and may have many\n\ words, spaces, punctuation, or any other printable characters.\n"), pgpout); ! hidekey = (GetHashedPassPhrase((char *)ideakey, 2) > 0); /* init CFB IDEA key */ #ifdef MACTC5 if (Abort) *** $(SRC)/pgp263i.orig/src/passwd.c Tue Jan 2 15:14:34 1996 --- passwd.c Sun Feb 4 15:04:01 1996 *************** *** 76,81 **** --- 76,82 ---- noecho = 0; for (;;) { fprintf(pgpout,LANG("\nEnter pass phrase: ")); + fflush(pgpout); #ifdef AMIGA requesterdesc=LANG("\nEnter pass phrase: "); #endif *** $(SRC)/pgp263i.orig/src/pgp.c Thu Jan 18 18:06:45 1996 --- pgp.c Mon Mar 4 11:25:03 1996 *************** *** 100,105 **** --- 100,106 ---- Version 2.6.2 - 11 Oct 94 Version 2.6.2i - 7 May 95 Version 2.6.3(i) - 18 Jan 96 + Version 2.6.3(i)a - 4 Mar 96 */ *************** *** 112,131 **** #include#include - /* Hack to get strncasecmp to work */ - #if defined(WIN32) - #define strncasecmp _strnicmp - #elif defined(AMIGA) || defined(OS2) || defined(__PUREC__) - #define strncasecmp strnicmp - #elif defined(MSDOS) - # if defined(__TURBOC__) - # define strncasecmp strncmpi - # else /* MSC */ - # define strncasecmp strnicmp - # endif - #endif - #ifdef UNIX #include #endif --- 113,120 ---- #include #include #ifdef UNIX + #include #include #endif *************** *** 168,174 **** char *Outputfile = NULL; void check_expiration_date(void); #define BEST -1 - #define strncasecmp strncmpi #define exit Exit void Exit(int x); #endif --- 157,162 ---- *************** *** 198,204 **** * compiler flags. */ #ifdef USA ! static const char __DOSVer[] = "$VER: PGP 2.6.3 (18.01.96)" # ifdef _M68020 " Amiga 68020 version by Rob Knop "; # else --- 186,192 ---- * compiler flags. */ #ifdef USA ! static const char __DOSVer[] = "$VER: PGP 2.6.3a (04.03.96)" # ifdef _M68020 " Amiga 68020 version by Rob Knop "; # else *************** *** 205,211 **** " Amiga 68000 version by Rob Knop "; # endif #else ! static const char __DOSVer[] = "$VER: PGP 2.6.3i (18.01.96)" # ifdef _M68020 " Amiga 68020 version by Peter Simons "; # else --- 193,199 ---- " Amiga 68000 version by Rob Knop "; # endif #else ! static const char __DOSVer[] = "$VER: PGP 2.6.3ia (04.03.96)" # ifdef _M68020 " Amiga 68020 version by Peter Simons "; # else *************** *** 216,226 **** /* Global filenames and system-wide file extensions... */ #ifdef USA ! char rel_version[] = _LANG("2.6.3"); /* release version */ #else ! char rel_version[] = _LANG("2.6.3i"); /* release version */ #endif ! char rel_date[] = "1996-01-18"; /* release date */ char PGP_EXTENSION[] = ".pgp"; char ASC_EXTENSION[] = ".asc"; char SIG_EXTENSION[] = ".sig"; --- 204,214 ---- /* Global filenames and system-wide file extensions... */ #ifdef USA ! char rel_version[] = _LANG("2.6.3a"); /* release version */ #else ! char rel_version[] = _LANG("2.6.3ia"); /* release version */ #endif ! char rel_date[] = "1996-03-04"; /* release date */ char PGP_EXTENSION[] = ".pgp"; char ASC_EXTENSION[] = ".asc"; char SIG_EXTENSION[] = ".sig"; *************** *** 260,279 **** 27-Jun-95 simons@peti.rhein.de (Peter Simons) Added support for lh5 archive as generated by Lha. Unfortunately, ! Lha requires special treatment also. I inserted the check right _before_ lharc, because lh5/lha is a special type of an lharc archive. */ static char *compressSig[] = ! {"PK\03\04", "ZOO ", "GIF8", "\352\140", "HPAK", "\037\213", "\037\235", "\032\013", "\032HP%" /* lharc is special, must be last */ }; static char *compressName[] = ! {"PKZIP", "Zoo", "GIF", "Arj", "Hpack", "gzip", "compressed", "PAK", "Hyper", "Lha", "Lharc"}; static char *compressExt[] = ! {".zip", ".zoo", ".gif", ".arj", ".hpk", ".gz", ".Z", ".pak", ".hyp", ".lha", ".lzh"}; --- 248,267 ---- 27-Jun-95 simons@peti.rhein.de (Peter Simons) Added support for lh5 archive as generated by Lha. Unfortunately, ! lh5 requires special treatment also. I inserted the check right _before_ lharc, because lh5/lha is a special type of an lharc archive. */ static char *compressSig[] = ! {"PK\03\04", "ZOO ", "GIF8", "\352\140", "Rar!", "HPAK", "\037\213", "\037\235", "\032\013", "\032HP%" /* lharc is special, must be last */ }; static char *compressName[] = ! {"PKZIP", "Zoo", "GIF", "Arj", "RAR", "Hpack", "gzip", "compressed", "PAK", "Hyper", "Lha", "Lharc"}; static char *compressExt[] = ! {".zip", ".zoo", ".gif", ".arj", ".rar", ".hpk", ".gz", ".Z", ".pak", ".hyp", ".lha", ".lzh"}; *************** *** 723,730 **** */ opt = 0; /* Number of config files read */ #ifdef PGP_SYSTEM_DIR ! strcpy(mcguffin, PGP_SYSTEM_DIR); ! strcat(mcguffin, "config.txt"); if (access(mcguffin, 0) == 0) { opt++; /* --- 711,721 ---- */ opt = 0; /* Number of config files read */ #ifdef PGP_SYSTEM_DIR ! #ifdef UNIX ! buildsysfilename(mcguffin, ".pgprc"); ! if (access(mcguffin, 0) != 0) ! #endif ! buildsysfilename(mcguffin, "config.txt"); if (access(mcguffin, 0) == 0) { opt++; /* *************** *** 800,806 **** * NOTE: this does not work with GNU getopt, use getopt.c from * the PGP distribution. */ ! if ((!strncasecmp(argv[optind], INCLUDE_MARK, INCLUDE_MARK_LEN)) || ((opt = pgp_getopt(argc, argv, OPTIONS)) == EOF)) { if (optind == argc) /* -- at end */ break; --- 791,797 ---- * NOTE: this does not work with GNU getopt, use getopt.c from * the PGP distribution. */ ! if ((!strncmp(argv[optind], INCLUDE_MARK, INCLUDE_MARK_LEN)) || ((opt = pgp_getopt(argc, argv, OPTIONS)) == EOF)) { if (optind == argc) /* -- at end */ break; *************** *** 908,914 **** /* '+' special option: does not require - */ case '+': if (processConfigLine(optarg) == 0) { ! if (!strncasecmp(optarg,"charset",7)) init_charset(); break; } --- 899,905 ---- /* '+' special option: does not require - */ case '+': if (processConfigLine(optarg) == 0) { ! if (!strncmp(optarg,"CH",2)) /* CHARSET */ init_charset(); break; } *************** *** 2866,2872 **** /* Check whether we need to do something or not. */ while(*recipients) { ! if (!strncasecmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN)) break; recipients++; } --- 2857,2863 ---- /* Check whether we need to do something or not. */ while(*recipients) { ! if (!strncmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN)) break; recipients++; } *************** *** 2879,2885 **** entrynum = 0; while(*recipients) { ! if (strncasecmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN)) { new[entrynum++] = *recipients++; if (entrynum == MAX_RECIPIENTS) { --- 2870,2876 ---- entrynum = 0; while(*recipients) { ! if (strncmp(*recipients, INCLUDE_MARK, INCLUDE_MARK_LEN)) { new[entrynum++] = *recipients++; if (entrynum == MAX_RECIPIENTS) { *************** *** 2919,2925 **** tempbuf[i] = '\0'; /* Copy new entry to new */ ! if (!(new[entrynum++] = strdup(tempbuf))) exitPGP(OUT_OF_MEM); if (entrynum == MAX_RECIPIENTS) { /* Current buffer is too small. --- 2910,2916 ---- tempbuf[i] = '\0'; /* Copy new entry to new */ ! if (!(new[entrynum++] = store_str(tempbuf))) exitPGP(OUT_OF_MEM); if (entrynum == MAX_RECIPIENTS) { /* Current buffer is too small. *** $(SRC)/pgp263i.orig/src/zdeflate.c Wed Sep 27 20:17:40 1995 --- zdeflate.c Sat Feb 17 14:48:47 1996 *************** *** 467,473 **** start, match, length); error("invalid match"); } ! if (verbose > 1) { fprintf(stderr,"\\[%d,%d]", start-match, length); /* putc a macro, not safe to modify args!! */ do { putc(slide[start], stderr); start++; } while (--length!=0); --- 467,473 ---- start, match, length); error("invalid match"); } ! if (verbose) { fprintf(stderr,"\\[%d,%d]", start-match, length); /* putc a macro, not safe to modify args!! */ do { putc(slide[start], stderr); start++; } while (--length!=0); *** $(SRC)/pgp263i.orig/src/zip.h Wed Sep 27 20:18:52 1995 --- zip.h Sat Feb 17 15:05:31 1996 *************** *** 83,89 **** /* Diagnostic functions */ #ifdef DEBUG ! extern char verbose; /* PGP -l flag */ # ifdef MSDOS # undef stderr # define stderr stdout --- 83,89 ---- /* Diagnostic functions */ #ifdef DEBUG ! extern unsigned char verbose; /* PGP -l flag */ # ifdef MSDOS # undef stderr # define stderr stdout *************** *** 92,100 **** # define Assert(cond,msg) {if(!(cond)) error(msg);} # define Trace(x) fprintf x # define Tracev(x) {if (verbose) fprintf x ;} ! # define Tracevv(x) {if (verbose>1) fprintf x ;} # define Tracec(c,x) {if (verbose && (c)) fprintf x ;} ! # define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;} #else # define diag(where) # define Assert(cond,msg) --- 92,100 ---- # define Assert(cond,msg) {if(!(cond)) error(msg);} # define Trace(x) fprintf x # define Tracev(x) {if (verbose) fprintf x ;} ! # define Tracevv(x) {if (verbose) fprintf x ;} # define Tracec(c,x) {if (verbose && (c)) fprintf x ;} ! # define Tracecv(c,x) {if (verbose && (c)) fprintf x ;} #else # define diag(where) # define Assert(cond,msg) *** $(SRC)/pgp263i.orig/src/ztrees.c Mon Jun 26 20:43:46 1995 --- ztrees.c Sat Feb 17 14:49:00 1996 *************** *** 312,318 **** #else /* DEBUG */ # define send_code(c, tree) \ ! { if (verbose>1) fprintf(stderr,"\ncd %3d ",(c)); \ send_bits(tree[c].Code, tree[c].Len); } #endif --- 312,318 ---- #else /* DEBUG */ # define send_code(c, tree) \ ! { if (verbose) fprintf(stderr,"\ncd %3d ",(c)); \ send_bits(tree[c].Code, tree[c].Len); } #endif