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)
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Index: sys/kern/kern_environment.c
 | |
| ===================================================================
 | |
| --- sys/kern/kern_environment.c	(revision 190221)
 | |
| +++ sys/kern/kern_environment.c	(working copy)
 | |
| @@ -87,7 +87,7 @@
 | |
|  	} */ *uap;
 | |
|  {
 | |
|  	char *name, *value, *buffer = NULL;
 | |
| -	size_t len, done, needed;
 | |
| +	size_t len, done, needed, buflen;
 | |
|  	int error, i;
 | |
|  
 | |
|  	KASSERT(dynamic_kenv, ("kenv: dynamic_kenv = 0"));
 | |
| @@ -100,13 +100,17 @@
 | |
|  			return (error);
 | |
|  #endif
 | |
|  		done = needed = 0;
 | |
| +		buflen = uap->len;
 | |
| +		if (buflen > KENV_SIZE * (KENV_MNAMELEN + KENV_MVALLEN + 2))
 | |
| +			buflen = KENV_SIZE * (KENV_MNAMELEN +
 | |
| +			    KENV_MVALLEN + 2);
 | |
|  		if (uap->len > 0 && uap->value != NULL)
 | |
| -			buffer = malloc(uap->len, M_TEMP, M_WAITOK|M_ZERO);
 | |
| +			buffer = malloc(buflen, M_TEMP, M_WAITOK|M_ZERO);
 | |
|  		mtx_lock(&kenv_lock);
 | |
|  		for (i = 0; kenvp[i] != NULL; i++) {
 | |
|  			len = strlen(kenvp[i]) + 1;
 | |
|  			needed += len;
 | |
| -			len = min(len, uap->len - done);
 | |
| +			len = min(len, buflen - done);
 | |
|  			/*
 | |
|  			 * If called with a NULL or insufficiently large
 | |
|  			 * buffer, just keep computing the required size.
 |