diff options
author | adrianp <adrianp@pkgsrc.org> | 2005-01-06 13:06:10 +0000 |
---|---|---|
committer | adrianp <adrianp@pkgsrc.org> | 2005-01-06 13:06:10 +0000 |
commit | f3ea10cc7e91a38a0158c9929b204805dc2f6373 (patch) | |
tree | 7ad8f66f66e2f4ba8491820f3efb0c6268fdc3ab | |
parent | daad1981cef927ac01f13dcb8c5e193213b5efe5 (diff) | |
download | pkgsrc-f3ea10cc7e91a38a0158c9929b204805dc2f6373.tar.gz |
Bump to nb1 for recent security issue:
http://sourceforge.net/mailarchive/forum.php?thread_id=6166881&forum_id=4978
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2004-1287
-rw-r--r-- | devel/nasm/Makefile | 3 | ||||
-rw-r--r-- | devel/nasm/distinfo | 9 | ||||
-rw-r--r-- | devel/nasm/patches/patch-ac | 118 | ||||
-rw-r--r-- | devel/nasm/patches/patch-ad | 185 | ||||
-rw-r--r-- | devel/nasm/patches/patch-ae | 17 | ||||
-rw-r--r-- | devel/nasm/patches/patch-af | 13 | ||||
-rw-r--r-- | devel/nasm/patches/patch-ag | 22 | ||||
-rw-r--r-- | devel/nasm/patches/patch-ah | 12 | ||||
-rw-r--r-- | devel/nasm/patches/patch-ai | 16 |
9 files changed, 393 insertions, 2 deletions
diff --git a/devel/nasm/Makefile b/devel/nasm/Makefile index cdc2c964b61..718b86a2999 100644 --- a/devel/nasm/Makefile +++ b/devel/nasm/Makefile @@ -1,7 +1,8 @@ -# $NetBSD: Makefile,v 1.13 2004/12/03 15:14:54 wiz Exp $ +# $NetBSD: Makefile,v 1.14 2005/01/06 13:06:10 adrianp Exp $ # DISTNAME= nasm-0.98.38 +PKGREVISION= 1 CATEGORIES= devel lang MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=nasm/} diff --git a/devel/nasm/distinfo b/devel/nasm/distinfo index adebe72b0de..70eb4160f37 100644 --- a/devel/nasm/distinfo +++ b/devel/nasm/distinfo @@ -1,6 +1,13 @@ -$NetBSD: distinfo,v 1.4 2003/10/05 09:45:13 wiz Exp $ +$NetBSD: distinfo,v 1.5 2005/01/06 13:06:10 adrianp Exp $ SHA1 (nasm-0.98.38.tar.gz) = cb58baa46900e8ce490fdc7c2cada35c2cc49ce0 Size (nasm-0.98.38.tar.gz) = 641727 bytes SHA1 (patch-aa) = b0a4c91d7448ba630bfb482ab8f97e98753169cb SHA1 (patch-ab) = bbe1d7219dd2e5ade8f97a4f3070bc87d3a7d4b5 +SHA1 (patch-ac) = 51e0bfa1c64729a4b2d509f48fd4929e591599e7 +SHA1 (patch-ad) = b24badef999b04e1d2fe6bc982077328f0d5ff0d +SHA1 (patch-ae) = 709de8188a60e2acc7f30e65a0c403a4189011c0 +SHA1 (patch-af) = a02e34f7d2c8637df708e8229a496e505e4e2650 +SHA1 (patch-ag) = 16d8817e73be90d083684669e8aafcc1dfe66242 +SHA1 (patch-ah) = ec63d62e6fbcc33e34bafc9200a91b6325562925 +SHA1 (patch-ai) = 374b62391207364537bd467ce271088717bb4b31 diff --git a/devel/nasm/patches/patch-ac b/devel/nasm/patches/patch-ac new file mode 100644 index 00000000000..14ba1d6c299 --- /dev/null +++ b/devel/nasm/patches/patch-ac @@ -0,0 +1,118 @@ +$NetBSD: patch-ac,v 1.1 2005/01/06 13:06:10 adrianp Exp $ + +--- preproc.c.orig 2004-12-16 10:49:55 -0500 ++++ preproc.c 2004-12-16 10:51:48 -0500 +@@ -528,7 +528,7 @@ + fname++; + fnlen = strcspn(fname, "\""); + line = nasm_malloc(20 + fnlen); +- sprintf(line, "%%line %d %.*s", lineno, fnlen, fname); ++ snprintf(line, 20+fnlen,"%%line %d %.*s", lineno, fnlen, fname); + nasm_free(oldline); + } + if (tasm_compatible_mode) +@@ -1043,7 +1043,7 @@ + char *p, *q = t->text + 2; + + q += strspn(q, "$"); +- sprintf(buffer, "..@%lu.", ctx->number); ++ snprintf(buffer, sizeof(buffer), "..@%lu.", ctx->number); + p = nasm_strcat(buffer, q); + nasm_free(t->text); + t->text = p; +@@ -1520,23 +1520,30 @@ + t = t->next; + continue; + } +- else if (tt->type == TOK_WHITESPACE) ++ if (tt->type == TOK_WHITESPACE) + { + tt = tt->next; + continue; + } +- else if (tt->type != t->type || +- mstrcmp(tt->text, t->text, casesense)) ++ if (tt->type != t->type) + { + j = FALSE; /* found mismatching tokens */ + break; + } +- else ++ /* Unify surrounding quotes for strings */ ++ if (t->type == TOK_STRING) + { +- t = t->next; +- tt = tt->next; +- continue; ++ tt->text[0] = t->text[0]; ++ tt->text[strlen(tt->text) - 1] = t->text[0]; + } ++ if (mstrcmp(tt->text, t->text, casesense) != 0) ++ { ++ j = FALSE; /* found mismatching tokens */ ++ break; ++ } ++ ++ t = t->next; ++ tt = tt->next; + } + if ((t->type != TOK_OTHER || strcmp(t->text, ",")) || tt) + j = FALSE; /* trailing gunk on one end or other */ +@@ -1954,7 +1961,7 @@ + free_tlist(tt); + + /* Now define the macro for the argument */ +- sprintf(directive, "%%define %s (%s+%d)", arg, StackPointer, ++ snprintf(directive, sizeof(directive), "%%define %s (%s+%d)", arg, StackPointer, + offset); + do_directive(tokenise(directive)); + offset += size; +@@ -2051,13 +2058,13 @@ + free_tlist(tt); + + /* Now define the macro for the argument */ +- sprintf(directive, "%%define %s (%s-%d)", local, StackPointer, ++ snprintf(directive, sizeof(directive), "%%define %s (%s-%d)", local, StackPointer, + offset); + do_directive(tokenise(directive)); + offset += size; + + /* Now define the assign to setup the enter_c macro correctly */ +- sprintf(directive, "%%assign %%$localsize %%$localsize+%d", ++ snprintf(directive, sizeof(directive), "%%assign %%$localsize %%$localsize+%d", + size); + do_directive(tokenise(directive)); + +@@ -3182,12 +3189,12 @@ + */ + case '0': + type = TOK_NUMBER; +- sprintf(tmpbuf, "%d", mac->nparam); ++ snprintf(tmpbuf, sizeof(tmpbuf), "%d", mac->nparam); + text = nasm_strdup(tmpbuf); + break; + case '%': + type = TOK_ID; +- sprintf(tmpbuf, "..@%lu.", mac->unique); ++ snprintf(tmpbuf, sizeof(tmpbuf), "..@%lu.", mac->unique); + text = nasm_strcat(tmpbuf, t->text + 2); + break; + case '-': +@@ -4067,7 +4074,7 @@ + return; + + va_start(arg, fmt); +- vsprintf(buff, fmt, arg); ++ vsnprintf(buff, sizeof(buff), fmt, arg); + va_end(arg); + + if (istk && istk->mstk && istk->mstk->name) +@@ -4530,7 +4537,7 @@ + make_tok_num(Token * tok, long val) + { + char numbuf[20]; +- sprintf(numbuf, "%ld", val); ++ snprintf(numbuf, sizeof(numbuf), "%ld", val); + tok->text = nasm_strdup(numbuf); + tok->type = TOK_NUMBER; + } diff --git a/devel/nasm/patches/patch-ad b/devel/nasm/patches/patch-ad new file mode 100644 index 00000000000..8ef098024c9 --- /dev/null +++ b/devel/nasm/patches/patch-ad @@ -0,0 +1,185 @@ +$NetBSD: patch-ad,v 1.1 2005/01/06 13:06:10 adrianp Exp $ + +--- disasm.c.orig 2003-02-24 18:22:45.000000000 -0500 ++++ disasm.c 2004-12-15 18:00:13.000000000 -0500 +@@ -484,8 +484,8 @@ + return data - origdata; + } + +-long disasm (unsigned char *data, char *output, int segsize, long offset, +- int autosync, unsigned long prefer) ++long disasm (unsigned char *data, char *output, int outbufsize, int segsize, ++ long offset, int autosync, unsigned long prefer) + { + struct itemplate **p, **best_p; + int length, best_length = 0; +@@ -583,26 +583,26 @@ + slen = 0; + + if (lock) +- slen += sprintf(output+slen, "lock "); ++ slen += snprintf(output+slen, outbufsize-slen, "lock "); + for (i = 0; i < ins.nprefix; i++) + switch (ins.prefixes[i]) { +- case P_REP: slen += sprintf(output+slen, "rep "); break; +- case P_REPE: slen += sprintf(output+slen, "repe "); break; +- case P_REPNE: slen += sprintf(output+slen, "repne "); break; +- case P_A16: slen += sprintf(output+slen, "a16 "); break; +- case P_A32: slen += sprintf(output+slen, "a32 "); break; +- case P_O16: slen += sprintf(output+slen, "o16 "); break; +- case P_O32: slen += sprintf(output+slen, "o32 "); break; ++ case P_REP: slen += snprintf(output+slen, outbufsize-slen, "rep "); break; ++ case P_REPE: slen += snprintf(output+slen, outbufsize-slen, "repe "); break; ++ case P_REPNE: slen += snprintf(output+slen, outbufsize-slen, "repne "); break; ++ case P_A16: slen += snprintf(output+slen, outbufsize-slen, "a16 "); break; ++ case P_A32: slen += snprintf(output+slen, outbufsize-slen, "a32 "); break; ++ case P_O16: slen += snprintf(output+slen, outbufsize-slen, "o16 "); break; ++ case P_O32: slen += snprintf(output+slen, outbufsize-slen, "o32 "); break; + } + + for (i = 0; i < elements(ico); i++) + if ((*p)->opcode == ico[i]) { +- slen += sprintf(output+slen, "%s%s", icn[i], ++ slen += snprintf(output+slen, outbufsize-slen, "%s%s", icn[i], + whichcond(ins.condition)); + break; + } + if (i >= elements(ico)) +- slen += sprintf(output+slen, "%s", insn_names[(*p)->opcode]); ++ slen += snprintf(output+slen, outbufsize-slen, "%s", insn_names[(*p)->opcode]); + colon = FALSE; + length += data - origdata; /* fix up for prefixes */ + for (i=0; i<(*p)->operands; i++) { +@@ -633,14 +633,14 @@ + ins.oprs[i].basereg = whichreg ((*p)->opd[i], + ins.oprs[i].basereg); + if ( (*p)->opd[i] & TO ) +- slen += sprintf(output+slen, "to "); +- slen += sprintf(output+slen, "%s", ++ slen += snprintf(output+slen, outbufsize-slen, "to "); ++ slen += snprintf(output+slen, outbufsize-slen, "%s", + reg_names[ins.oprs[i].basereg-EXPR_REG_START]); + } else if (!(UNITY & ~(*p)->opd[i])) { + output[slen++] = '1'; + } else if ( (*p)->opd[i] & IMMEDIATE ) { + if ( (*p)->opd[i] & BITS8 ) { +- slen += sprintf(output+slen, "byte "); ++ slen += snprintf(output+slen, outbufsize-slen, "byte "); + if (ins.oprs[i].segment & SEG_SIGNED) { + if (ins.oprs[i].offset < 0) { + ins.oprs[i].offset *= -1; +@@ -649,17 +649,17 @@ + output[slen++] = '+'; + } + } else if ( (*p)->opd[i] & BITS16 ) { +- slen += sprintf(output+slen, "word "); ++ slen += snprintf(output+slen, outbufsize-slen, "word "); + } else if ( (*p)->opd[i] & BITS32 ) { +- slen += sprintf(output+slen, "dword "); ++ slen += snprintf(output+slen, outbufsize-slen, "dword "); + } else if ( (*p)->opd[i] & NEAR ) { +- slen += sprintf(output+slen, "near "); ++ slen += snprintf(output+slen, outbufsize-slen, "near "); + } else if ( (*p)->opd[i] & SHORT ) { +- slen += sprintf(output+slen, "short "); ++ slen += snprintf(output+slen, outbufsize-slen, "short "); + } +- slen += sprintf(output+slen, "0x%lx", ins.oprs[i].offset); ++ slen += snprintf(output+slen, outbufsize-slen, "0x%lx", ins.oprs[i].offset); + } else if ( !(MEM_OFFS & ~(*p)->opd[i]) ) { +- slen += sprintf(output+slen, "[%s%s%s0x%lx]", ++ slen += snprintf(output+slen, outbufsize-slen, "[%s%s%s0x%lx]", + (segover ? segover : ""), + (segover ? ":" : ""), + (ins.oprs[i].addr_size == 32 ? "dword " : +@@ -669,30 +669,30 @@ + } else if ( !(REGMEM & ~(*p)->opd[i]) ) { + int started = FALSE; + if ( (*p)->opd[i] & BITS8 ) +- slen += sprintf(output+slen, "byte "); ++ slen += snprintf(output+slen, outbufsize-slen, "byte "); + if ( (*p)->opd[i] & BITS16 ) +- slen += sprintf(output+slen, "word "); ++ slen += snprintf(output+slen, outbufsize-slen, "word "); + if ( (*p)->opd[i] & BITS32 ) +- slen += sprintf(output+slen, "dword "); ++ slen += snprintf(output+slen, outbufsize-slen, "dword "); + if ( (*p)->opd[i] & BITS64 ) +- slen += sprintf(output+slen, "qword "); ++ slen += snprintf(output+slen, outbufsize-slen, "qword "); + if ( (*p)->opd[i] & BITS80 ) +- slen += sprintf(output+slen, "tword "); ++ slen += snprintf(output+slen, outbufsize-slen, "tword "); + if ( (*p)->opd[i] & FAR ) +- slen += sprintf(output+slen, "far "); ++ slen += snprintf(output+slen, outbufsize-slen, "far "); + if ( (*p)->opd[i] & NEAR ) +- slen += sprintf(output+slen, "near "); ++ slen += snprintf(output+slen, outbufsize-slen, "near "); + output[slen++] = '['; + if (ins.oprs[i].addr_size) +- slen += sprintf(output+slen, "%s", ++ slen += snprintf(output+slen, outbufsize-slen, "%s", + (ins.oprs[i].addr_size == 32 ? "dword " : + ins.oprs[i].addr_size == 16 ? "word " : "")); + if (segover) { +- slen += sprintf(output+slen, "%s:", segover); ++ slen += snprintf(output+slen, outbufsize-slen, "%s:", segover); + segover = NULL; + } + if (ins.oprs[i].basereg != -1) { +- slen += sprintf(output+slen, "%s", ++ slen += snprintf(output+slen, outbufsize-slen, "%s", + reg_names[(ins.oprs[i].basereg - + EXPR_REG_START)]); + started = TRUE; +@@ -700,11 +700,11 @@ + if (ins.oprs[i].indexreg != -1) { + if (started) + output[slen++] = '+'; +- slen += sprintf(output+slen, "%s", ++ slen += snprintf(output+slen, outbufsize-slen, "%s", + reg_names[(ins.oprs[i].indexreg - + EXPR_REG_START)]); + if (ins.oprs[i].scale > 1) +- slen += sprintf(output+slen, "*%d", ins.oprs[i].scale); ++ slen += snprintf(output+slen, outbufsize-slen, "*%d", ins.oprs[i].scale); + started = TRUE; + } + if (ins.oprs[i].segment & SEG_DISP8) { +@@ -713,20 +713,20 @@ + ins.oprs[i].offset = - (signed char) ins.oprs[i].offset; + sign = '-'; + } +- slen += sprintf(output+slen, "%c0x%lx", sign, ++ slen += snprintf(output+slen, outbufsize-slen, "%c0x%lx", sign, + ins.oprs[i].offset); + } else if (ins.oprs[i].segment & SEG_DISP16) { + if (started) + output[slen++] = '+'; +- slen += sprintf(output+slen, "0x%lx", ins.oprs[i].offset); ++ slen += snprintf(output+slen, outbufsize-slen, "0x%lx", ins.oprs[i].offset); + } else if (ins.oprs[i].segment & SEG_DISP32) { + if (started) + output[slen++] = '+'; +- slen += sprintf(output+slen, "0x%lx", ins.oprs[i].offset); ++ slen += snprintf(output+slen, outbufsize-slen, "0x%lx", ins.oprs[i].offset); + } + output[slen++] = ']'; + } else { +- slen += sprintf(output+slen, "<operand%d>", i); ++ slen += snprintf(output+slen, outbufsize-slen, "<operand%d>", i); + } + } + output[slen] = '\0'; +@@ -741,8 +741,8 @@ + return length; + } + +-long eatbyte (unsigned char *data, char *output) ++long eatbyte (unsigned char *data, char *output, int outbufsize) + { +- sprintf(output, "db 0x%02X", *data); ++ snprintf(output, outbufsize, "db 0x%02X", *data); + return 1; + } diff --git a/devel/nasm/patches/patch-ae b/devel/nasm/patches/patch-ae new file mode 100644 index 00000000000..291f9595194 --- /dev/null +++ b/devel/nasm/patches/patch-ae @@ -0,0 +1,17 @@ +$NetBSD: patch-ae,v 1.1 2005/01/06 13:06:10 adrianp Exp $ + +--- ndisasm.c.orig 2002-04-30 17:04:18.000000000 -0400 ++++ ndisasm.c 2004-12-15 13:27:21.000000000 -0500 +@@ -243,10 +243,10 @@ + nextsync = next_sync (offset, &synclen); + } + while (p > q && (p - q >= INSN_MAX || lenread == 0)) { +- lendis = disasm (q, outbuf, bits, offset, autosync, prefer); ++ lendis = disasm (q, outbuf, sizeof(outbuf), bits, offset, autosync, prefer); + if (!lendis || lendis > (p - q) || + (unsigned long)lendis > nextsync-offset) +- lendis = eatbyte (q, outbuf); ++ lendis = eatbyte (q, outbuf, sizeof(outbuf)); + output_ins (offset, q, lendis, outbuf); + q += lendis; + offset += lendis; diff --git a/devel/nasm/patches/patch-af b/devel/nasm/patches/patch-af new file mode 100644 index 00000000000..1166fde3483 --- /dev/null +++ b/devel/nasm/patches/patch-af @@ -0,0 +1,13 @@ +$NetBSD: patch-af,v 1.1 2005/01/06 13:06:10 adrianp Exp $ + +--- listing.c.orig 2002-09-11 22:23:54.000000000 -0400 ++++ listing.c 2004-12-15 13:05:05.000000000 -0500 +@@ -192,7 +192,7 @@ + else if (typ == OUT_RESERVE) + { + char q[20]; +- sprintf(q, "<res %08lX>", size); ++ snprintf(q, sizeof(q), "<res %08lX>", size); + list_out (offset, q); + } + } diff --git a/devel/nasm/patches/patch-ag b/devel/nasm/patches/patch-ag new file mode 100644 index 00000000000..94045987aa6 --- /dev/null +++ b/devel/nasm/patches/patch-ag @@ -0,0 +1,22 @@ +$NetBSD: patch-ag,v 1.1 2005/01/06 13:06:10 adrianp Exp $ + +--- labels.c.orig 2003-09-07 20:30:40.000000000 -0400 ++++ labels.c 2004-12-15 13:03:20.000000000 -0500 +@@ -221,7 +221,7 @@ + slen += strlen(lpostfix); + slen++; /* room for that null char */ + xsymbol = nasm_malloc(slen); +- sprintf(xsymbol,"%s%s%s",lprefix,lptr->defn.label,lpostfix); ++ snprintf(xsymbol,slen,"%s%s%s",lprefix,lptr->defn.label,lpostfix); + + ofmt->symdef (xsymbol, segment, offset, exi, + special ? special : lptr->defn.special); +@@ -286,7 +286,7 @@ + slen += strlen(lpostfix); + slen++; /* room for that null char */ + xsymbol = nasm_malloc(slen); +- sprintf(xsymbol,"%s%s%s",lprefix,lptr->defn.label,lpostfix); ++ snprintf(xsymbol,slen,"%s%s%s",lprefix,lptr->defn.label,lpostfix); + + ofmt->symdef (xsymbol, segment, offset, exi, + special ? special : lptr->defn.special); diff --git a/devel/nasm/patches/patch-ah b/devel/nasm/patches/patch-ah new file mode 100644 index 00000000000..05950c4c97f --- /dev/null +++ b/devel/nasm/patches/patch-ah @@ -0,0 +1,12 @@ +$NetBSD: patch-ah,v 1.1 2005/01/06 13:06:10 adrianp Exp $ + +--- nasm.c.orig 2003-09-10 19:34:23.000000000 -0400 ++++ nasm.c 2004-12-15 12:10:25.000000000 -0500 +@@ -185,7 +185,7 @@ + /* define some macros dependent of command-line */ + { + char temp [64]; +- sprintf (temp, "__OUTPUT_FORMAT__=%s\n", ofmt->shortname); ++ snprintf (temp, sizeof(temp), "__OUTPUT_FORMAT__=%s\n", ofmt->shortname); + pp_pre_define (temp); + } diff --git a/devel/nasm/patches/patch-ai b/devel/nasm/patches/patch-ai new file mode 100644 index 00000000000..8a50d411e65 --- /dev/null +++ b/devel/nasm/patches/patch-ai @@ -0,0 +1,16 @@ +$NetBSD: patch-ai,v 1.1 2005/01/06 13:06:10 adrianp Exp $ + +--- disasm.h.orig 2002-04-30 16:56:44.000000000 -0400 ++++ disasm.h 2004-12-15 13:26:37.000000000 -0500 +@@ -11,8 +11,8 @@ + + #define INSN_MAX 32 /* one instruction can't be longer than this */ + +-long disasm (unsigned char *data, char *output, int segsize, long offset, +- int autosync, unsigned long prefer); +-long eatbyte (unsigned char *data, char *output); ++long disasm (unsigned char *data, char *output, int outbufsize, int segsize, ++ long offset, int autosync, unsigned long prefer); ++long eatbyte (unsigned char *data, char *output, int outbufsize); + + #endif |