Date: Wed, 13 Jul 2011 15:03:25 -0700 (PDT) From: Jonathan Hanna <jhanna@pangolin-systems.com> To: FreeBSD-gnats-submit@FreeBSD.org Subject: ports/158878: [patch] textproc/dadadodo assumes long is 32 bits Message-ID: <201107132203.p6DM3PL2099155@pangolin-gbh.mine.nu> Resent-Message-ID: <201107132220.p6DMK9Hc019871@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 158878 >Category: ports >Synopsis: [patch] textproc/dadadodo assumes long is 32 bits >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jul 13 22:20:09 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Jonathan Hanna >Release: FreeBSD 9.0-CURRENT amd64 >Organization: >Environment: Any platform where long is not 32 bits. >Description: u_long is assumed to be 32 bits, resulting in a failure to decode a binary compiled data file and to produce text or stats output. >How-To-Repeat: Run on amd64 with a large input set (68MB of text was used). A small input set will not trigger the problem as 16 or 8 bit integers will then be used for the compiled data file. >Fix: diff -u -r -N dadadodo.orig/files/patch-files.c dadadodo/files/patch-files.c --- dadadodo.orig/files/patch-files.c 1969-12-31 16:00:00.000000000 -0800 +++ dadadodo/files/patch-files.c 2011-07-13 14:39:10.845282150 -0700 @@ -0,0 +1,76 @@ +--- files.c.orig 2011-07-13 14:32:40.193282630 -0700 ++++ files.c 2011-07-13 14:34:01.828282090 -0700 +@@ -49,7 +49,7 @@ + static int + write_int32 (FILE *out, int x) + { +- u_long lx = (u_long) x; /* no htonl, since we're writing big-endian */ ++ u_int32_t lx = (u_int32_t) x; /* no htonl, since we're writing big-endian */ + write_buf[write_fp++] = (lx >> 24); + write_buf[write_fp++] = (lx >> 16) & 0xFF; + write_buf[write_fp++] = (lx >> 8) & 0xFF; +@@ -386,7 +386,7 @@ + + + buf_size = 50; +- buf = (void *) malloc (buf_size * sizeof(u_long)); ++ buf = (void *) malloc (buf_size * sizeof(u_int32_t)); + if (!buf) goto FAIL; + + +@@ -415,15 +415,15 @@ + switch (buf_elt_size) + { + case 4: +- w->count = ntohl(((u_long *) buf) [0]); +- w->start = ntohl(((u_long *) buf) [1]); +- w->cap = ntohl(((u_long *) buf) [2]); +- w->comma = ntohl(((u_long *) buf) [3]); +- w->period = ntohl(((u_long *) buf) [4]); +- w->quem = ntohl(((u_long *) buf) [5]); +- w->bang = ntohl(((u_long *) buf) [6]); +- w->succ_length = ntohl(((u_long *) buf) [7]); +- w->pred_length = ntohl(((u_long *) buf) [8]); ++ w->count = ntohl(((u_int32_t *) buf) [0]); ++ w->start = ntohl(((u_int32_t *) buf) [1]); ++ w->cap = ntohl(((u_int32_t *) buf) [2]); ++ w->comma = ntohl(((u_int32_t *) buf) [3]); ++ w->period = ntohl(((u_int32_t *) buf) [4]); ++ w->quem = ntohl(((u_int32_t *) buf) [5]); ++ w->bang = ntohl(((u_int32_t *) buf) [6]); ++ w->succ_length = ntohl(((u_int32_t *) buf) [7]); ++ w->pred_length = ntohl(((u_int32_t *) buf) [8]); + break; + case 2: + w->count = ntohs(((u_short *) buf) [0]); +@@ -487,8 +487,8 @@ + switch (buf_elt_size) + { + case 4: +- al_l->count = ntohl(((u_long *) buf) [j * 2]); +- al_l->word = ntohl(((u_long *) buf) [j * 2 + 1]); ++ al_l->count = ntohl(((u_int32_t *) buf) [j * 2]); ++ al_l->word = ntohl(((u_int32_t *) buf) [j * 2 + 1]); + break; + case 2: + al_l->count = ntohs(((u_short *) buf) [j * 2]); +@@ -520,8 +520,8 @@ + switch (buf_elt_size) + { + case 4: +- al_l->count = ntohl(((u_long *) buf) [j * 2]); +- al_l->word = ntohl(((u_long *) buf) [j * 2 + 1]); ++ al_l->count = ntohl(((u_int32_t *) buf) [j * 2]); ++ al_l->word = ntohl(((u_int32_t *) buf) [j * 2 + 1]); + break; + case 2: + al_l->count = ntohs(((u_short *) buf) [j * 2]); +@@ -588,7 +588,7 @@ + if (buf == st) + { + for (i = 0; i < nstarters; i++) +- st[i] = ntohl (((u_long *)buf) [i]); ++ st[i] = ntohl (((u_int32_t *)buf) [i]); + buf = 0; + } + else if (buf_elt_size == sizeof(u_short)) >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107132203.p6DM3PL2099155>