diff --exclude='*~' -Naur lynx2-8-5/CHANGES lynx-2.8.5-rel5/CHANGES --- lynx2-8-5/CHANGES 2004-02-04 10:07:09.000000000 -0200 +++ lynx-2.8.5-rel5/CHANGES 2005-11-14 16:02:40.000000000 -0200 @@ -1,6 +1,32 @@ Changes since Lynx 2.8 release =============================================================================== +2005-10-29 (2.8.5rel.5 fixes from 2.8.6dev.15) +* modify LYLoadCGI() to prompt user, displaying the command that would be + executed, to confirm that it should be. This makes it easier to notice when + a local program would be run by activating a lynxcgi link. This is not done + in advanced mode, since the URL is already visible in the status line (report + by vade79, comments by Greg MacManus) -TD + +2005-10-25 (2.8.5rel.4 fixes from 2.8.6dev.14) +* fix error in rel.3 patch (report by Klaus Singvogel) + +2005-10-17 (2.8.5rel.3 fixes from 2.8.6dev.14) +* eliminate fixed-size buffers in HTrjis() and related functions to avoid + potential buffer overflow in nntp pages (report by Ulf Harnhammar, + CAN-2005-3120) -TD + +2004-04-22 (2.8.5rel.2 fixes from 2.8.6dev.1) +* correct ifdef in LYgetattrs() to ensure that getattrs() is used only if the + configure script actually found it (report/patch by Paul Gilmartin). +* correct LYcommandList() to allocate data passed to HTList_addObject(), since + LYRemoveFromCloset() may free it (report by FLWM) -TD +* add a null-pointer check to parameter of HTQuoteParameter(), fixes bug + introduced in 2.8.5pre.4 (report by FLWM) -TD +* correct units shown by HTReadProgress() for very low rates - bug from + 2.8.5pre.3 changes (report by PG) -TD +* update current-version in README -LP + 2004-02-04 (2.8.5rel.1) * build fixes for MINGW32 -DK * build fixes for OS/2 (reported by IZ) -TD diff --exclude='*~' -Naur lynx2-8-5/configure lynx-2.8.5-rel5/configure --- lynx2-8-5/configure 2004-02-04 10:07:09.000000000 -0200 +++ lynx-2.8.5-rel5/configure 2005-11-14 16:02:40.000000000 -0200 @@ -723,7 +723,7 @@ PACKAGE=lynx # $Format: "VERSION=$ProjectVersion$"$ -VERSION=2.8.5rel.1 +VERSION=2.8.5rel.5 diff --exclude='*~' -Naur lynx2-8-5/configure.in lynx-2.8.5-rel5/configure.in --- lynx2-8-5/configure.in 2004-02-04 10:07:09.000000000 -0200 +++ lynx-2.8.5-rel5/configure.in 2005-11-14 16:02:40.000000000 -0200 @@ -5,7 +5,7 @@ dnl dnl ask PRCS to plug-in the project-version for the configure-script. dnl $Format: "AC_REVISION($ProjectVersion$)"$ -AC_REVISION(2.8.5rel.1) +AC_REVISION(2.8.5rel.5) # Save the original $CFLAGS so we can distinguish whether the user set those # in the environment, or whether autoconf added -O and -g options: @@ -33,7 +33,7 @@ PACKAGE=lynx dnl ask PRCS to plug-in the project-version for the packages. # $Format: "VERSION=$ProjectVersion$"$ -VERSION=2.8.5rel.1 +VERSION=2.8.5rel.5 AC_SUBST(PACKAGE) AC_SUBST(VERSION) AC_SUBST(DESTDIR) diff --exclude='*~' -Naur lynx2-8-5/lynx.cfg lynx-2.8.5-rel5/lynx.cfg --- lynx2-8-5/lynx.cfg 2004-01-28 17:30:38.000000000 -0200 +++ lynx-2.8.5-rel5/lynx.cfg 2005-11-14 16:02:40.000000000 -0200 @@ -3,10 +3,10 @@ # or Lynx_Dir:lynx.cfg (VMS) # # $Format: "#PRCS LYNX_VERSION \"$ProjectVersion$\""$ -#PRCS LYNX_VERSION "2.8.5rel.1" +#PRCS LYNX_VERSION "2.8.5rel.5" # # $Format: "#PRCS LYNX_DATE \"$ProjectDate$\""$ -#PRCS LYNX_DATE "Wed, 04 Feb 2004 04:07:09 -0800" +#PRCS LYNX_DATE "Sat, 29 Oct 2005 12:33:45 -0700" # # Definition pairs are of the form VARIABLE:DEFINITION # NO spaces are allowed between the pair items. diff --exclude='*~' -Naur lynx2-8-5/README lynx-2.8.5-rel5/README --- lynx2-8-5/README 2004-01-24 23:51:04.000000000 -0200 +++ lynx-2.8.5-rel5/README 2005-11-14 16:02:35.000000000 -0200 @@ -1,7 +1,7 @@ Lynx README file -Lynx Version 2.8.4 is the latest release (July 2001). +Lynx Version 2.8.5 is the latest release (February 2004). See the CHANGES file for a complete record of all changes and bug fixes. New releases are announced on the lynx-dev mailing list (see below). diff --exclude='*~' -Naur lynx2-8-5/src/HTAlert.c lynx-2.8.5-rel5/src/HTAlert.c --- lynx2-8-5/src/HTAlert.c 2004-01-24 23:51:04.000000000 -0200 +++ lynx-2.8.5-rel5/src/HTAlert.c 2005-11-14 16:02:35.000000000 -0200 @@ -165,13 +165,16 @@ static long kb_units = 1024; CONST char *u = HTProgressUnits(LYTransferRate); - if ( (LYTransferRate == rateKB || LYTransferRate == rateEtaKB_maybe) - && (n >= 10 * kb_units) ) - sprintf(s, "%ld", n/kb_units); - else if ((LYTransferRate == rateKB || LYTransferRate == rateEtaKB_maybe) - && (n > 999)) /* Avoid switching between 1016b/s and 1K/s */ - sprintf(s, "%.2g", ((double)n)/kb_units); - else { + if (LYTransferRate == rateKB || LYTransferRate == rateEtaKB_maybe) { + if (n >= 10 * kb_units) { + sprintf(s, "%ld", n/kb_units); + } else if (n > 999) { /* Avoid switching between 1016b/s and 1K/s */ + sprintf(s, "%.2g", ((double)n)/kb_units); + } else { + sprintf(s, "%ld", n); + u = HTProgressUnits(rateBYTES); + } + } else { sprintf(s, "%ld", n); } diff --exclude='*~' -Naur lynx2-8-5/src/LYCgi.c lynx-2.8.5-rel5/src/LYCgi.c --- lynx2-8-5/src/LYCgi.c 2004-02-02 18:02:28.000000000 -0200 +++ lynx-2.8.5-rel5/src/LYCgi.c 2005-11-14 16:02:40.000000000 -0200 @@ -150,6 +150,40 @@ return -1; } #else +#ifdef LYNXCGI_LINKS +/* + * Wrapper for exec_ok(), confirming with user if the link text is not visible + * in the status line. + */ +PRIVATE BOOL can_exec_cgi ARGS2(const char *, linktext, const char *, linkargs) +{ + const char *format = gettext("Do you want to execute \"%s\"?"); + char *message = NULL; + char *command = NULL; + char *p; + BOOL result = TRUE; + + if (!exec_ok(HTLoadedDocumentURL(), linktext, CGI_PATH)) { + /* exec_ok gives out msg. */ + result = FALSE; + } else if (user_mode < ADVANCED_MODE) { + StrAllocCopy(command, linktext); + if (non_empty(linkargs)) { + HTSprintf(&command, " %s", linkargs); + } + HTUnEscape(command); + for (p = command; *p; ++p) + if (*p == '+') + *p = ' '; + HTSprintf0(&message, format, command); + result = HTConfirm(message); + FREE(message); + FREE(command); + } + return result; +} +#endif /* LYNXCGI_LINKS */ + PRIVATE int LYLoadCGI ARGS4( CONST char *, arg, HTParentAnchor *, anAnchor, @@ -281,8 +315,7 @@ strcmp(arg, HTLoadedDocumentURL()) && HText_AreDifferent(anAnchor, arg) && HTUnEscape(orig_pgm) && - !exec_ok(HTLoadedDocumentURL(), orig_pgm, - CGI_PATH)) { /* exec_ok gives out msg. */ + !can_exec_cgi(orig_pgm, "")) { /* * If we have extra path info and are not just reloading * the current, check the full file path (after unescaping) @@ -313,8 +346,7 @@ !(reloading && anAnchor->document) && strcmp(arg, HTLoadedDocumentURL()) && HText_AreDifferent(anAnchor, arg) && - !exec_ok(HTLoadedDocumentURL(), pgm, - CGI_PATH)) { /* exec_ok gives out msg. */ + !can_exec_cgi(pgm, pgm_args)) { /* * If we are reloading a lynxcgi document that had already been * loaded, the various checks above should allow it even if diff --exclude='*~' -Naur lynx2-8-5/src/LYKeymap.c lynx-2.8.5-rel5/src/LYKeymap.c --- lynx2-8-5/src/LYKeymap.c 2003-06-01 22:16:28.000000000 -0300 +++ lynx-2.8.5-rel5/src/LYKeymap.c 2005-11-14 16:02:35.000000000 -0200 @@ -1075,8 +1075,11 @@ unsigned j; myList = HTList_new(); for (j = 0; revmap[j].name != 0; j++) { - if (revmap[j].doc != 0) - HTList_addObject(myList, (char *)revmap[j].name); + if (revmap[j].doc != 0) { + char *data = NULL; + StrAllocCopy(data, revmap[j].name); + HTList_addObject(myList, data); + } } } return myList; diff --exclude='*~' -Naur lynx2-8-5/src/LYMainLoop.c lynx-2.8.5-rel5/src/LYMainLoop.c --- lynx2-8-5/src/LYMainLoop.c 2004-01-28 17:30:38.000000000 -0200 +++ lynx-2.8.5-rel5/src/LYMainLoop.c 2005-11-14 16:02:39.000000000 -0200 @@ -5207,8 +5207,8 @@ char cfile[128]; FILE *cfp; char *cp; - int ch, recall; - int URLTotal; + int ch = 0, recall = 0; + int URLTotal = 0; int URLNum; BOOLEAN FirstURLRecall = TRUE; char *temp = NULL; diff --exclude='*~' -Naur lynx2-8-5/src/LYOptions.c lynx-2.8.5-rel5/src/LYOptions.c --- lynx2-8-5/src/LYOptions.c 2004-01-28 17:30:38.000000000 -0200 +++ lynx-2.8.5-rel5/src/LYOptions.c 2005-11-14 16:02:39.000000000 -0200 @@ -2488,7 +2488,7 @@ PostPair *data = 0; DocAddress WWWDoc; /* need on exit */ int i; - int code; + int code = 0; BOOLEAN save_all = FALSE; int display_char_set_old = current_char_set; BOOLEAN raw_mode_old = LYRawMode; @@ -2642,7 +2642,7 @@ /* Keypad Mode: SELECT */ if (!strcmp(data[i].tag, keypad_mode_string)) { - int newval; + int newval = 0; if (GetOptValues(keypad_mode_values, data[i].value, &newval) && keypad_mode != newval) { keypad_mode = newval; diff --exclude='*~' -Naur lynx2-8-5/src/LYStrings.c lynx-2.8.5-rel5/src/LYStrings.c --- lynx2-8-5/src/LYStrings.c 2004-02-02 18:02:28.000000000 -0200 +++ lynx-2.8.5-rel5/src/LYStrings.c 2005-11-14 16:02:39.000000000 -0200 @@ -1046,7 +1046,7 @@ BOOLEAN ok = FALSE; if (*src == SQUOTE) { - int keysym; + int keysym = 0; unescaped_char(src, &keysym); if (keysym >= 0) { dst[0] = keysym; diff --exclude='*~' -Naur lynx2-8-5/userdefs.h lynx-2.8.5-rel5/userdefs.h --- lynx2-8-5/userdefs.h 2004-02-02 18:02:28.000000000 -0200 +++ lynx-2.8.5-rel5/userdefs.h 2005-11-14 16:02:40.000000000 -0200 @@ -1360,11 +1360,11 @@ * the version definition with the Project Version on checkout. Just * ignore it. - kw */ /* $Format: "#define LYNX_VERSION \"$ProjectVersion$\""$ */ -#define LYNX_VERSION "2.8.5rel.1" +#define LYNX_VERSION "2.8.5rel.5" #define LYNX_WWW_HOME "http://lynx.isc.org/" #define LYNX_WWW_DIST "http://lynx.isc.org/current/" /* $Format: "#define LYNX_DATE \"$ProjectDate$\""$ */ -#define LYNX_DATE "Wed, 04 Feb 2004 04:07:09 -0800" +#define LYNX_DATE "Sat, 29 Oct 2005 12:33:45 -0700" #define LYNX_DATE_OFF 5 /* truncate the automatically-generated date */ #define LYNX_DATE_LEN 11 /* truncate the automatically-generated date */ diff --exclude='*~' -Naur lynx2-8-5/WWW/Library/Implementation/HTGopher.c lynx-2.8.5-rel5/WWW/Library/Implementation/HTGopher.c --- lynx2-8-5/WWW/Library/Implementation/HTGopher.c 2003-04-27 21:38:00.000000000 -0300 +++ lynx-2.8.5-rel5/WWW/Library/Implementation/HTGopher.c 2005-11-14 16:02:39.000000000 -0200 @@ -1117,6 +1117,7 @@ }; out = 0; + memset(&ctx, 0, sizeof(ctx)); ctx.host = host; ctx.seek = (char *) 0; ctx.port = port; diff --exclude='*~' -Naur lynx2-8-5/WWW/Library/Implementation/HTMIME.c lynx-2.8.5-rel5/WWW/Library/Implementation/HTMIME.c --- lynx2-8-5/WWW/Library/Implementation/HTMIME.c 2004-01-08 00:03:09.000000000 -0200 +++ lynx-2.8.5-rel5/WWW/Library/Implementation/HTMIME.c 2005-11-14 16:02:39.000000000 -0200 @@ -2062,27 +2062,23 @@ ** ** Written by S. Ichikawa, ** partially inspired by encdec.c of . -** Assume caller's buffer is LINE_LENGTH bytes, these decode to -** no longer than the input strings. */ -#define LINE_LENGTH 512 /* Maximum length of line of ARTICLE etc */ -#ifdef ESC -#undef ESC -#endif /* ESC */ #include /* S/390 -- gil -- 0163 */ -#define ESC CH_ESC PRIVATE char HTmm64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" ; PRIVATE char HTmmquote[] = "0123456789ABCDEF"; PRIVATE int HTmmcont = 0; -PUBLIC void HTmmdec_base64 ARGS2( - char *, t, +PRIVATE void HTmmdec_base64 ARGS2( + char **, t, char *, s) { int d, count, j, val; - char buf[LINE_LENGTH], *bp, nw[4], *p; + char *buf, *bp, nw[4], *p; + + if ((buf = malloc(strlen(s) * 3 + 1)) == 0) + outofmem(__FILE__, "HTmmdec_base64"); for (bp = buf; *s; s += 4) { val = 0; @@ -2113,14 +2109,18 @@ *bp++ = nw[2]; } *bp = '\0'; - strcpy(t, buf); + StrAllocCopy(*t, buf); + FREE(buf); } -PUBLIC void HTmmdec_quote ARGS2( - char *, t, +PRIVATE void HTmmdec_quote ARGS2( + char **, t, char *, s) { - char buf[LINE_LENGTH], cval, *bp, *p; + char *buf, cval, *bp, *p; + + if ((buf = malloc(strlen(s) + 1)) == 0) + outofmem(__FILE__, "HTmmdec_quote"); for (bp = buf; *s; ) { if (*s == '=') { @@ -2147,23 +2147,27 @@ } } *bp = '\0'; - strcpy(t, buf); + StrAllocCopy(*t, buf); + FREE(buf); } /* ** HTmmdecode for ISO-2022-JP - FM */ PUBLIC void HTmmdecode ARGS2( - char *, trg, - char *, str) + char **, target, + char *, source) { - char buf[LINE_LENGTH], mmbuf[LINE_LENGTH]; + char *buf; + char *mmbuf = NULL; + char *m2buf = NULL; char *s, *t, *u; int base64, quote; - buf[0] = '\0'; - - for (s = str, u = buf; *s; ) { + if ((buf = malloc(strlen(source) + 1)) == 0) + outofmem(__FILE__, "HTmmdecode"); + + for (s = source, u = buf; *s;) { if (!strncasecomp(s, "=?ISO-2022-JP?B?", 16)) { base64 = 1; } else { @@ -2177,15 +2181,18 @@ if (base64 || quote) { if (HTmmcont) { for (t = s - 1; - t >= str && (*t == ' ' || *t == '\t'); t--) { + t >= source && (*t == ' ' || *t == '\t'); t--) { u--; } } + if (mmbuf == 0) /* allocate buffer big enough for source */ + StrAllocCopy(mmbuf, source); for (s += 16, t = mmbuf; *s; ) { if (s[0] == '?' && s[1] == '=') { break; } else { *t++ = *s++; + *t = '\0'; } } if (s[0] != '?' || s[1] != '=') { @@ -2195,14 +2202,12 @@ *t = '\0'; } if (base64) - HTmmdec_base64(mmbuf, mmbuf); + HTmmdec_base64(&m2buf, mmbuf); if (quote) - HTmmdec_quote(mmbuf, mmbuf); - for (t = mmbuf; *t; ) + HTmmdec_quote(&m2buf, mmbuf); + for (t = m2buf; *t; ) *u++ = *t++; HTmmcont = 1; - /* if (*s == ' ' || *s == '\t') *u++ = *s; */ - /* for ( ; *s == ' ' || *s == '\t'; s++) ; */ } else { if (*s != ' ' && *s != '\t') HTmmcont = 0; @@ -2211,7 +2216,10 @@ } *u = '\0'; end: - strcpy(trg, buf); + StrAllocCopy(*target, buf); + FREE(m2buf); + FREE(mmbuf); + FREE(buf); } /* @@ -2219,22 +2227,27 @@ ** (The author of this function "rjis" is S. Ichikawa.) */ PUBLIC int HTrjis ARGS2( - char *, t, + char **, t, char *, s) { - char *p, buf[LINE_LENGTH]; + char *p; + char *buf = NULL; int kanji = 0; - if (strchr(s, ESC) || !strchr(s, '$')) { - if (s != t) - strcpy(t, s); + if (strchr(s, CH_ESC) || !strchr(s, '$')) { + if (s != *t) + StrAllocCopy(*t, s); return 1; } + + if ((buf = malloc(strlen(s) * 2 + 1)) == 0) + outofmem(__FILE__, "HTrjis"); + for (p = buf; *s; ) { if (!kanji && s[0] == '$' && (s[1] == '@' || s[1] == 'B')) { if (HTmaybekanji((int)s[2], (int)s[3])) { kanji = 1; - *p++ = ESC; + *p++ = CH_ESC; *p++ = *s++; *p++ = *s++; *p++ = *s++; @@ -2246,7 +2259,7 @@ } if (kanji && s[0] == '(' && (s[1] == 'J' || s[1] == 'B')) { kanji = 0; - *p++ = ESC; + *p++ = CH_ESC; *p++ = *s++; *p++ = *s++; continue; @@ -2255,7 +2268,8 @@ } *p = *s; /* terminate string */ - strcpy(t, buf); + StrAllocCopy(*t, buf); + FREE(buf); return 0; } diff --exclude='*~' -Naur lynx2-8-5/WWW/Library/Implementation/HTMIME.h lynx-2.8.5-rel5/WWW/Library/Implementation/HTMIME.h --- lynx2-8-5/WWW/Library/Implementation/HTMIME.h 2003-01-22 07:43:13.000000000 -0200 +++ lynx-2.8.5-rel5/WWW/Library/Implementation/HTMIME.h 2005-11-14 16:02:37.000000000 -0200 @@ -67,20 +67,12 @@ For handling Japanese headers. */ -extern void HTmmdec_base64 PARAMS(( - char * t, - char * s)); - -extern void HTmmdec_quote PARAMS(( - char * t, - char * s)); - extern void HTmmdecode PARAMS(( - char * trg, + char ** trg, char * str)); extern int HTrjis PARAMS(( - char * t, + char ** t, char * s)); extern int HTmaybekanji PARAMS(( diff --exclude='*~' -Naur lynx2-8-5/WWW/Library/Implementation/HTNews.c lynx-2.8.5-rel5/WWW/Library/Implementation/HTNews.c --- lynx2-8-5/WWW/Library/Implementation/HTNews.c 2004-01-08 00:03:09.000000000 -0200 +++ lynx-2.8.5-rel5/WWW/Library/Implementation/HTNews.c 2005-11-14 16:02:37.000000000 -0200 @@ -940,7 +940,6 @@ } } -#ifdef SH_EX /* for MIME */ #ifdef NEWS_DEBUG /* for DEBUG 1997/11/07 (Fri) 17:20:16 */ void debug_print(unsigned char *p) @@ -962,45 +961,15 @@ } #endif -static char *decode_mime(char *str) +static char *decode_mime(char **str) { - char temp[LINE_LENGTH]; /* FIXME: what determines the actual size? */ - char *p, *q; - - if (str == NULL) - return ""; - +#ifdef SH_EX if (HTCJK != JAPANESE) - return str; - - LYstrncpy(temp, str, sizeof(temp) - 1); - q = temp; - while ((p = strchr(q, '=')) != 0) { - if (p[1] == '?') { - HTmmdecode(p, p); - q = p + 2; - } else { - q = p + 1; - } - } -#ifdef NEWS_DEBUG - printf("new=["); - debug_print(temp); + return *str; #endif - HTrjis(temp, temp); - strcpy(str, temp); - - return str; + HTmmdecode(str, *str); + return HTrjis(str, *str) ? *str : ""; } -#else /* !SH_EX */ -static char *decode_mime ARGS1(char *, str) -{ - HTmmdecode(str, str); - HTrjis(str, str); - return str; -} -#endif - /* Read in an Article read_article ** ------------------ @@ -1087,22 +1056,22 @@ } else if (match(full_line, "SUBJECT:")) { StrAllocCopy(subject, HTStrip(strchr(full_line,':')+1)); - decode_mime(subject); + decode_mime(&subject); } else if (match(full_line, "DATE:")) { StrAllocCopy(date, HTStrip(strchr(full_line,':')+1)); } else if (match(full_line, "ORGANIZATION:")) { StrAllocCopy(organization, HTStrip(strchr(full_line,':')+1)); - decode_mime(organization); + decode_mime(&organization); } else if (match(full_line, "FROM:")) { StrAllocCopy(from, HTStrip(strchr(full_line,':')+1)); - decode_mime(from); + decode_mime(&from); } else if (match(full_line, "REPLY-TO:")) { StrAllocCopy(replyto, HTStrip(strchr(full_line,':')+1)); - decode_mime(replyto); + decode_mime(&replyto); } else if (match(full_line, "NEWSGROUPS:")) { StrAllocCopy(newsgroups, HTStrip(strchr(full_line,':')+1)); @@ -1711,8 +1680,8 @@ int, last_required) { char line[LINE_LENGTH+1]; - char author[LINE_LENGTH+1]; - char subject[LINE_LENGTH+1]; + char *author = NULL; + char *subject = NULL; char *date = NULL; int i; char *p; @@ -1725,7 +1694,6 @@ int status, count, first, last; /* Response fields */ /* count is only an upper limit */ - author[0] = '\0'; START(HTML_HEAD); PUTC('\n'); START(HTML_TITLE); @@ -1946,8 +1914,8 @@ case 'S': case 's': if (match(line, "SUBJECT:")) { - LYstrncpy(subject, line+9, sizeof(subject)-1);/* Save subject */ - decode_mime(subject); + StrAllocCopy(subject, line + 9); + decode_mime(&subject); } break; @@ -1964,10 +1932,8 @@ case 'F': if (match(line, "FROM:")) { char * p2; - LYstrncpy(author, - author_name(strchr(line,':')+1), - sizeof(author)-1); - decode_mime(author); + StrAllocCopy(author, strchr(line, ':') + 1); + decode_mime(&author); p2 = author + strlen(author) - 1; if (*p2==LF) *p2 = '\0'; /* Chop off newline */ @@ -1988,11 +1954,8 @@ PUTC('\n'); START(HTML_LI); -#ifdef SH_EX /* for MIME */ - HTSprintf0(&temp, "\"%s\"", decode_mime(subject)); -#else - HTSprintf0(&temp, "\"%s\"", subject); -#endif + p = decode_mime(&subject); + HTSprintf0(&temp, "\"%s\"", NonNull(p)); if (reference) { write_anchor(temp, reference); FREE(reference); @@ -2001,18 +1964,14 @@ } FREE(temp); - if (author[0] != '\0') { + if (author != NULL) { PUTS(" - "); if (LYListNewsDates) START(HTML_I); -#ifdef SH_EX /* for MIME */ - PUTS(decode_mime(author)); -#else - PUTS(author); -#endif + PUTS(decode_mime(&author)); if (LYListNewsDates) END(HTML_I); - author[0] = '\0'; + FREE(author); } if (date) { if (!diagnostic) { @@ -2055,6 +2014,8 @@ MAYBE_END(HTML_LI); } /* Handle response to HEAD request */ } /* Loop over article */ + FREE(author); + FREE(subject); } /* If read headers */ PUTC('\n'); if (LYListNewsNumbers) diff --exclude='*~' -Naur lynx2-8-5/WWW/Library/Implementation/HTString.c lynx-2.8.5-rel5/WWW/Library/Implementation/HTString.c --- lynx2-8-5/WWW/Library/Implementation/HTString.c 2004-01-28 17:30:38.000000000 -0200 +++ lynx-2.8.5-rel5/WWW/Library/Implementation/HTString.c 2005-11-14 16:02:35.000000000 -0200 @@ -877,11 +877,15 @@ CONST char *, parameter) { size_t i; - size_t last = strlen(parameter); + size_t last; size_t n = 0; size_t quoted = 0; char * result; + if (parameter == 0) + parameter = ""; + + last = strlen(parameter); for (i=0; i < last; ++i) if (strchr("\\&#$^*?(){}<>\"';`|", parameter[i]) != 0 || isspace(UCH(parameter[i]))) diff --exclude='*~' -Naur lynx2-8-5/WWW/Library/Implementation/HTUtils.h lynx-2.8.5-rel5/WWW/Library/Implementation/HTUtils.h --- lynx2-8-5/WWW/Library/Implementation/HTUtils.h 2004-02-04 10:07:09.000000000 -0200 +++ lynx-2.8.5-rel5/WWW/Library/Implementation/HTUtils.h 2005-11-14 16:02:35.000000000 -0200 @@ -571,6 +571,10 @@ #define TRACE_CFG (TRACE_bit(3)) #define TRACE_BSTRING (TRACE_bit(4)) +#if defined(USE_VERTRACE) && !defined(LY_TRACELINE) +#define LY_TRACELINE __LINE__ +#endif + #if defined(LY_TRACELINE) #define LY_SHOWWHERE fprintf( tfp, "%s: %d: ", __FILE__, LY_TRACELINE ), #else