Package: dbskkd-cdb Version: 1:1.01-13 Severity: important Tags: patch In uint32.h, uint32 is defined as follows. ===================================================================== typedef unsigned long uint32; ===================================================================== But in many 64bit system (like amd64), long is 64bit integer.
And in dbskkd-cdb.c, the pointer to uint32 (defined as unsigned long) is passed as a pointer to unsigned int. ===================================================================== uint32 datalen; ... get_status = cdb_seek(jisho_fd, key, keylen, &datalen); ===================================================================== In LP64 system, latter half of variable ``datalen'' will be not initialized. So datalen may have very big value greater than 1UL<<32.
diff -Nru dbskkd-cdb-1.01.orig/cdb.h dbskkd-cdb-1.01/cdb.h --- dbskkd-cdb-1.01.orig/cdb.h 1998-10-22 14:42:09.000000000 +0900 +++ dbskkd-cdb-1.01/cdb.h 1970-01-01 09:00:00.000000000 +0900 @@ -1,12 +0,0 @@ -#ifndef CDB_H -#define CDB_H - -#include "uint32.h" - -extern uint32 cdb_hash(); -extern uint32 cdb_unpack(); - -extern int cdb_bread(); -extern int cdb_seek(); - -#endif diff -Nru dbskkd-cdb-1.01.orig/dbskkd-cdb.c dbskkd-cdb-1.01/dbskkd-cdb.c --- dbskkd-cdb-1.01.orig/dbskkd-cdb.c 1999-09-28 21:14:47.000000000 +0900 +++ dbskkd-cdb-1.01/dbskkd-cdb.c 2005-11-18 22:12:58.657122578 +0900 @@ -72,7 +72,7 @@ #include <signal.h> #include <limits.h> #include <syslog.h> -#include "cdb.h" +#include <cdb.h> /* architectural dependencies */ @@ -149,7 +149,7 @@ register unsigned char *pbuf, *key, *p; int length, errcode, get_status; unsigned int keylen; - uint32 datalen; + unsigned datalen; length = read(STDIN, &combuf[0], BUFSIZE - 1); if (length < 0) { diff -Nru dbskkd-cdb-1.01.orig/uint32.h dbskkd-cdb-1.01/uint32.h --- dbskkd-cdb-1.01.orig/uint32.h 1998-10-22 14:42:09.000000000 +0900 +++ dbskkd-cdb-1.01/uint32.h 1970-01-01 09:00:00.000000000 +0900 @@ -1,6 +0,0 @@ -#ifndef UINT32_H -#define UINT32_H - -typedef unsigned long uint32; - -#endif