patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
		
			
				
	
	
		
			196 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
	
		
			5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Index: tcp_seq.h
 | |
| ===================================================================
 | |
| RCS file: /usr2/ncvs/src/sys/netinet/tcp_seq.h,v
 | |
| retrieving revision 1.11
 | |
| retrieving revision 1.12
 | |
| diff -u -r1.11 -r1.12
 | |
| --- netinet/tcp_seq.h	1999/12/29 04:41:02	1.11
 | |
| +++ netinet/tcp_seq.h	2000/09/29 01:37:19	1.12
 | |
| @@ -91,7 +91,7 @@
 | |
|   * number in the range [0-0x3ffff] that is hard to predict.
 | |
|   */
 | |
|  #ifndef tcp_random18
 | |
| -#define	tcp_random18()	((random() >> 14) & 0x3ffff)
 | |
| +#define	tcp_random18()	(arc4random() & 0x3ffff)
 | |
|  #endif
 | |
|  #define	TCP_ISSINCR	(122*1024 + tcp_random18())
 | |
|  
 | |
| Index: tcp_subr.c
 | |
| ===================================================================
 | |
| RCS file: /usr2/ncvs/src/sys/netinet/tcp_subr.c,v
 | |
| retrieving revision 1.80
 | |
| retrieving revision 1.81
 | |
| diff -u -r1.80 -r1.81
 | |
| --- netinet/tcp_subr.c	2000/09/25 23:40:22	1.80
 | |
| +++ netinet/tcp_subr.c	2000/09/29 01:37:19	1.81
 | |
| @@ -178,7 +178,7 @@
 | |
|  {
 | |
|  	int hashsize;
 | |
|  	
 | |
| -	tcp_iss = random();	/* wrong, but better than a constant */
 | |
| +	tcp_iss = arc4random();	/* wrong, but better than a constant */
 | |
|  	tcp_ccgen = 1;
 | |
|  	tcp_cleartaocache();
 | |
|  
 | |
| Index: sys/alpha/conf/files.alpha
 | |
| ===================================================================
 | |
| RCS file: /usr2/ncvs/src/sys/alpha/conf/Attic/files.alpha,v
 | |
| retrieving revision 1.15.2.3
 | |
| retrieving revision 1.15.2.4
 | |
| diff -u -u -r1.15.2.3 -r1.15.2.4
 | |
| --- alpha/conf/files.alpha	1999/12/06 21:03:17	1.15.2.3
 | |
| +++ alpha/conf/files.alpha	2000/09/29 22:07:27	1.15.2.4
 | |
| @@ -120,6 +120,7 @@
 | |
|  alpha/isa/isa.c			optional	isa
 | |
|  alpha/isa/mcclock_isa.c		optional	isa
 | |
|  alpha/alpha/elf_machdep.c	standard
 | |
| +libkern/arc4random.c		standard
 | |
|  libkern/bcd.c			standard
 | |
|  libkern/bcmp.c			standard
 | |
|  libkern/ffs.c			standard
 | |
| Index: sys/i386/conf/files.i386
 | |
| ===================================================================
 | |
| RCS file: /usr2/ncvs/src/sys/i386/conf/Attic/files.i386,v
 | |
| retrieving revision 1.220.2.17
 | |
| retrieving revision 1.220.2.18
 | |
| diff -u -u -r1.220.2.17 -r1.220.2.18
 | |
| --- i386/conf/files.i386	1999/12/06 21:03:19	1.220.2.17
 | |
| +++ i386/conf/files.i386	2000/09/29 22:07:28	1.220.2.18
 | |
| @@ -330,6 +330,7 @@
 | |
|  i4b/layer1/i4b_elsa_qs1i.c	optional	isic	device-driver
 | |
|  i4b/layer1/i4b_elsa_qs1p.c	optional	isic	device-driver
 | |
|  i4b/layer1/i4b_siemens_isurf.c	optional	isic	device-driver
 | |
| +libkern/arc4random.c		standard
 | |
|  libkern/bcd.c			standard
 | |
|  libkern/divdi3.c		standard
 | |
|  libkern/inet_ntoa.c		standard
 | |
| Index: sys/sys/libkern.h
 | |
| ===================================================================
 | |
| RCS file: /usr2/ncvs/src/sys/sys/libkern.h,v
 | |
| retrieving revision 1.16.4.1
 | |
| retrieving revision 1.16.4.2
 | |
| diff -u -u -r1.16.4.1 -r1.16.4.2
 | |
| --- sys/libkern.h	1999/08/29 16:32:28	1.16.4.1
 | |
| +++ sys/libkern.h	2000/09/29 22:07:29	1.16.4.2
 | |
| @@ -61,6 +61,7 @@
 | |
|  static __inline u_long ulmin(u_long a, u_long b) { return (a < b ? a : b); }
 | |
|  
 | |
|  /* Prototypes for non-quad routines. */
 | |
| +u_int32_t arc4random __P((void));
 | |
|  int	 bcmp __P((const void *, const void *, size_t));
 | |
|  #ifndef HAVE_INLINE_FFS
 | |
|  int	 ffs __P((int));
 | |
| --- /dev/null	Thu Oct  5 03:00:27 2000
 | |
| +++ libkern/arc4random.c	Fri Sep 29 15:07:29 2000
 | |
| @@ -0,0 +1,111 @@
 | |
| +/*-
 | |
| + * THE BEER-WARE LICENSE
 | |
| + *
 | |
| + * <dan@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
 | |
| + * can do whatever you want with this stuff.  If we meet some day, and you
 | |
| + * think this stuff is worth it, you can buy me a beer in return.
 | |
| + *
 | |
| + * Dan Moschuk
 | |
| + *
 | |
| + * $FreeBSD: src/sys/libkern/arc4random.c,v 1.6.2.1 2000/09/29 22:07:29 kris Exp $
 | |
| + */
 | |
| +
 | |
| +#include <sys/libkern.h>
 | |
| +
 | |
| +#define	ARC4_MAXRUNS 64
 | |
| +
 | |
| +static u_int8_t arc4_i, arc4_j;
 | |
| +static int arc4_initialized = 0;
 | |
| +static int arc4_numruns = 0;
 | |
| +static u_int8_t arc4_sbox[256];
 | |
| +
 | |
| +extern u_int read_random (void *, u_int);
 | |
| +
 | |
| +static __inline void
 | |
| +arc4_swap(u_int8_t *a, u_int8_t *b)
 | |
| +{
 | |
| +	u_int8_t c;
 | |
| +
 | |
| +	c = *a;
 | |
| +	*a = *b;
 | |
| +	*b = c;
 | |
| +}	
 | |
| +
 | |
| +/*
 | |
| + * Stir our S-box.
 | |
| + */
 | |
| +static void
 | |
| +arc4_randomstir (void)
 | |
| +{
 | |
| +	u_int8_t key[256];
 | |
| +	int r, n;
 | |
| +
 | |
| +	r = read_random(key, sizeof(key));
 | |
| +	/* if r == 0 || -1, just use what was on the stack */
 | |
| +	if (r > 0)
 | |
| +	{
 | |
| +		for (n = r; n < sizeof(key); n++)
 | |
| +			key[n] = key[n % r];
 | |
| +	}
 | |
| +
 | |
| +	for (n = 0; n < 256; n++)
 | |
| +	{
 | |
| +		arc4_j = (arc4_j + arc4_sbox[n] + key[n]) % 256;
 | |
| +		arc4_swap(&arc4_sbox[n], &arc4_sbox[arc4_j]);
 | |
| +	}
 | |
| +}
 | |
| +
 | |
| +/*
 | |
| + * Initialize our S-box to its beginning defaults.
 | |
| + */
 | |
| +static void
 | |
| +arc4_init(void)
 | |
| +{
 | |
| +	int n;
 | |
| +
 | |
| +	arc4_i = arc4_j = 0;
 | |
| +	for (n = 0; n < 256; n++)
 | |
| +		arc4_sbox[n] = (u_int8_t) n;
 | |
| +
 | |
| +	arc4_randomstir();
 | |
| +	arc4_initialized = 1;
 | |
| +}
 | |
| +
 | |
| +/*
 | |
| + * Generate a random byte.
 | |
| + */
 | |
| +static u_int8_t
 | |
| +arc4_randbyte(void)
 | |
| +{
 | |
| +	u_int8_t arc4_t;
 | |
| +
 | |
| +	arc4_i = (arc4_i + 1) % 256;
 | |
| +	arc4_j = (arc4_j + arc4_sbox[arc4_i]) % 256;
 | |
| +
 | |
| +	arc4_swap(&arc4_sbox[arc4_i], &arc4_sbox[arc4_j]);
 | |
| +
 | |
| +	arc4_t = (arc4_sbox[arc4_i] + arc4_sbox[arc4_j]) % 256;
 | |
| +	return arc4_sbox[arc4_t];
 | |
| +}
 | |
| +
 | |
| +u_int32_t
 | |
| +arc4random(void)
 | |
| +{
 | |
| +	u_int32_t ret;
 | |
| +
 | |
| +	/* Initialize array if needed. */
 | |
| +	if (!arc4_initialized)
 | |
| +		arc4_init();
 | |
| +	if (++arc4_numruns > ARC4_MAXRUNS)
 | |
| +	{
 | |
| +		arc4_randomstir();
 | |
| +		arc4_numruns = 0;
 | |
| +	}
 | |
| +
 | |
| +	ret = arc4_randbyte();
 | |
| +	ret |= arc4_randbyte() << 8;
 | |
| +	ret |= arc4_randbyte() << 16;
 | |
| +	ret |= arc4_randbyte() << 24;
 | |
| +
 | |
| +	return ret;
 | |
| +}
 |