- krb5_fcc_generate_new(): unlock the fcc list lock before returning in the
non-mkstemp() case, don't unlock the lock twice before returning if we
    happen to run out of memory (fixed in trunk by rewriting the function)
			
			
This commit is contained in:
		
							parent
							
								
									0d57fe8b86
								
							
						
					
					
						commit
						6df4ee1a7a
					
				
							
								
								
									
										25
									
								
								krb5-1.6.3-cc_gen_new-locks.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								krb5-1.6.3-cc_gen_new-locks.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | |||||||
|  | We lock "krb5int_cc_file_mutex" before attempting to open the file in the | ||||||
|  | we-don't-have-mkstemp() case.  And we shouldn't be trying to unlock it twice. | ||||||
|  | The function's rewritten in 1.6.4, but fix it here in the meantime. | ||||||
|  | --- krb5-1.6.3/src/lib/krb5/ccache/cc_file.c	2008-10-28 17:20:13.000000000 -0400
 | ||||||
|  | +++ krb5-1.6.3/src/lib/krb5/ccache/cc_file.c	2008-10-28 17:20:07.000000000 -0400
 | ||||||
|  | @@ -1976,8 +1976,9 @@ krb5_fcc_generate_new (krb5_context cont
 | ||||||
|  |       mktemp(scratch); | ||||||
|  |       /* Make sure the file name is reserved */ | ||||||
|  |       ret = THREEPARAMOPEN(scratch, O_CREAT | O_EXCL | O_WRONLY | O_BINARY, 0); | ||||||
|  |       if (ret == -1) { | ||||||
|  | +	  k5_mutex_unlock(&krb5int_cc_file_mutex);
 | ||||||
|  |  	  return krb5_fcc_interpret(context, errno); | ||||||
|  |       } | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  | @@ -1995,9 +1996,8 @@ krb5_fcc_generate_new (krb5_context cont
 | ||||||
|  |            k5_mutex_unlock(&krb5int_cc_file_mutex); | ||||||
|  |  	  free(data); | ||||||
|  |  	  close(ret); | ||||||
|  |  	  unlink(scratch); | ||||||
|  | -	  k5_mutex_unlock(&krb5int_cc_file_mutex);
 | ||||||
|  |  	  return KRB5_CC_NOMEM; | ||||||
|  |       } | ||||||
|  |   | ||||||
|  |       kret = k5_mutex_init(&data->lock); | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user