From cdb9c32138fe80cc4767b5c597713cf773e12f0e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 5 May 2006 16:18:45 +0000 Subject: * sunrpc/svcauth_des.c (cache_init): Use calloc instead of malloc&bzero. * sunrpc/svc_udp.c (BZERO): Remove definition. (CALLOC): Define. (svc_enablecache): Use CALLOC instead of ALLOC&BZERO. * sunrpc/des_impl.c: Remove ALT_ECB support. We never used it. (des_SPtrans): Use uint32_t type. (des_skb): Likewise. * sunrpc/xdr_ref.c (xdr_reference): Use calloc instead of malloc&bzero. place where the iso639 array might be accessed beyond the limits. --- sunrpc/des_impl.c | 29 +++-------------------------- sunrpc/svc_udp.c | 10 ++++------ sunrpc/svcauth_des.c | 4 +--- sunrpc/xdr_ref.c | 3 +-- 4 files changed, 9 insertions(+), 37 deletions(-) (limited to 'sunrpc') diff --git a/sunrpc/des_impl.c b/sunrpc/des_impl.c index d0004b9..dc94e22 100644 --- a/sunrpc/des_impl.c +++ b/sunrpc/des_impl.c @@ -6,10 +6,11 @@ /* write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,*/ /* Boston, MA 02111, USA to obtain a copy. */ #include +#include #include "des.h" -static const unsigned long des_SPtrans[8][64] = +static const uint32_t des_SPtrans[8][64] = { { /* nibble 0 */ 0x00820200, 0x00020000, 0x80800000, 0x80820200, @@ -155,7 +156,7 @@ static const unsigned long des_SPtrans[8][64] = 0x00000020, 0x08208000, 0x00208020, 0x00000000, 0x08000000, 0x08200020, 0x00008000, 0x00208020}}; -static const unsigned long des_skb[8][64] = +static const uint32_t des_skb[8][64] = { { /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ 0x00000000, 0x00000010, 0x20000000, 0x20000010, @@ -352,26 +353,6 @@ static const unsigned long des_skb[8][64] = (a)=(a)^(t)^(t>>(16-(n)))) -/* The changes to this macro may help or hinder, depending on the - * compiler and the achitecture. gcc2 always seems to do well :-). - * Inspired by Dana How - * DO NOT use the alternative version on machines with 8 byte longs. - */ -#ifdef ALT_ECB -#define D_ENCRYPT(L,R,S) \ - u=((R^s[S ])<<2); \ - t= R^s[S+1]; \ - t=((t>>2)+(t<<30)); \ - L^= \ - *(const unsigned long *)(des_SP+0x0100+((t )&0xfc))+ \ - *(const unsigned long *)(des_SP+0x0300+((t>> 8)&0xfc))+ \ - *(const unsigned long *)(des_SP+0x0500+((t>>16)&0xfc))+ \ - *(const unsigned long *)(des_SP+0x0700+((t>>24)&0xfc))+ \ - *(const unsigned long *)(des_SP+ ((u )&0xfc))+ \ - *(const unsigned long *)(des_SP+0x0200+((u>> 8)&0xfc))+ \ - *(const unsigned long *)(des_SP+0x0400+((u>>16)&0xfc))+ \ - *(const unsigned long *)(des_SP+0x0600+((u>>24)&0xfc)); -#else /* original version */ #define D_ENCRYPT(L,R,S) \ u=(R^s[S ]); \ t=R^s[S+1]; \ @@ -384,7 +365,6 @@ static const unsigned long des_skb[8][64] = des_SPtrans[2][(u>> 8)&0x3f]| \ des_SPtrans[4][(u>>16)&0x3f]| \ des_SPtrans[6][(u>>24)&0x3f]; -#endif #define ITERATIONS 16 @@ -464,9 +444,6 @@ internal_function des_encrypt (unsigned long *buf, unsigned long *schedule, int encrypt) { register unsigned long l, r, t, u; -#ifdef ALT_ECB - register const unsigned char *des_SP = (const unsigned char *) des_SPtrans; -#endif register int i; register unsigned long *s; diff --git a/sunrpc/svc_udp.c b/sunrpc/svc_udp.c index 67b84f1..dfeb6de 100644 --- a/sunrpc/svc_udp.c +++ b/sunrpc/svc_udp.c @@ -406,8 +406,8 @@ svcudp_destroy (xprt) #define ALLOC(type, size) \ (type *) mem_alloc((unsigned) (sizeof(type) * (size))) -#define BZERO(addr, type, size) \ - __bzero((char *) addr, sizeof(type) * (int) (size)) +#define CALLOC(type, size) \ + (type *) calloc (sizeof (type), size) /* * An entry in the cache @@ -482,15 +482,14 @@ svcudp_enablecache (SVCXPRT *transp, u_long size) } uc->uc_size = size; uc->uc_nextvictim = 0; - uc->uc_entries = ALLOC (cache_ptr, size * SPARSENESS); + uc->uc_entries = CALLOC (cache_ptr, size * SPARSENESS); if (uc->uc_entries == NULL) { mem_free (uc, sizeof (struct udp_cache)); CACHE_PERROR (_("enablecache: could not allocate cache data")); return 0; } - BZERO (uc->uc_entries, cache_ptr, size * SPARSENESS); - uc->uc_fifo = ALLOC (cache_ptr, size); + uc->uc_fifo = CALLOC (cache_ptr, size); if (uc->uc_fifo == NULL) { mem_free (uc->uc_entries, size * SPARSENESS); @@ -498,7 +497,6 @@ svcudp_enablecache (SVCXPRT *transp, u_long size) CACHE_PERROR (_("enablecache: could not allocate cache fifo")); return 0; } - BZERO (uc->uc_fifo, cache_ptr, size); su->su_cache = (char *) uc; return 1; } diff --git a/sunrpc/svcauth_des.c b/sunrpc/svcauth_des.c index becdd50..933d001 100644 --- a/sunrpc/svcauth_des.c +++ b/sunrpc/svcauth_des.c @@ -396,11 +396,9 @@ cache_init (void) register int i; authdes_cache = (struct cache_entry *) - mem_alloc (sizeof (struct cache_entry) * AUTHDES_CACHESZ); + calloc (sizeof (struct cache_entry) * AUTHDES_CACHESZ, 1); if (authdes_cache == NULL) return; - __bzero ((char *) authdes_cache, - sizeof (struct cache_entry) * AUTHDES_CACHESZ); authdes_lru = (int *) mem_alloc (sizeof (int) * AUTHDES_CACHESZ); /* diff --git a/sunrpc/xdr_ref.c b/sunrpc/xdr_ref.c index 961c82e..bc5f72d 100644 --- a/sunrpc/xdr_ref.c +++ b/sunrpc/xdr_ref.c @@ -79,14 +79,13 @@ xdr_reference (xdrs, pp, size, proc) return TRUE; case XDR_DECODE: - *pp = loc = (caddr_t) mem_alloc (size); + *pp = loc = (caddr_t) calloc (1, size); if (loc == NULL) { (void) __fxprintf (NULL, "%s", _("xdr_reference: out of memory\n")); return FALSE; } - __bzero (loc, (int) size); break; default: break; -- cgit v1.1