Re: [PATCH]fix bugs and compiling warnings in libgssglue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 19/10/12 08:26, J. Bruce Fields wrote:
> Steve, is it you that maintains libgssglue now?
Yes, I do. Thanks for the ping. I did miss this...

steved.

> 
> --b.
> 
> On Mon, Sep 17, 2012 at 03:07:52PM -0400, Yao Zhao wrote:
>> Hi,
>>
>> The 4 attached patches fixed a couple of warnings and bug found when
>> compiling libgssglue.
>>
>> thanks,
>> yao
> 
>> --- a/src/g_canon_name.c
>> +++ b/src/g_canon_name.c
>> fix the bug:
>> g_canon_name.c:125:5: warning: passing argument 2 of '__gss_copy_namebuf' from incompatible pointer type [enabled by default]
>>
>> the 2nd argument of __gss_copy_namebuf should be address of *gss_buffer_t, \
>> but a *gss_buffer_t is assigned.
>>
>> what __gss_copy_namebuf does is to alloc memory for a gss_buffer_desc and \
>> copy from src and return its address.
>>
>> if following code failed, gss_release_name will free \
>> union_canon_name->external_name.value if it is not NULL.
>>
>> OM_uint32 __gss_copy_namebuf(src, dest)
>>     gss_buffer_t   src;
>>     gss_buffer_t   *dest;
>>
>> typedef struct gss_union_name_t {
>> 	gss_mechanism		gss_mech;
>> 	gss_OID			name_type;
>> 	gss_buffer_desc		external_name;
>> 	/*
>> 	 * These last two fields are only filled in for mechanism
>> 	 * names.
>> 	 */
>> 	gss_OID			mech_type;
>> 	gss_name_t		mech_name;
>> } gss_union_name_desc, *gss_union_name_t;
>>
>> typedef struct gss_buffer_desc_struct {
>>       size_t length;
>>       void FAR *value;
>> } gss_buffer_desc, FAR *gss_buffer_t;
>>
>> Upstream-Status: Pending
>> Signed-off-by: Yao Zhao <yao.zhao@xxxxxxxxxxxxx>
>>
>> @@ -121,11 +121,17 @@ gss_canonicalize_name (OM_uint32 *minor_
>>  
>>      union_canon_name->mech_name = mech_name;
>>  
>> -    status = __gss_copy_namebuf(&union_input_name->external_name,
>> -				&union_canon_name->external_name);
>> -    if (status != GSS_S_COMPLETE)
>> -	goto failure;
>> +    union_canon_name->external_name.value = (void*) malloc(
>> +                      union_input_name->external_name.length + 1);
>> +    if (!union_canon_name->external_name.value)
>> +        goto failure;
>>  
>> +    memcpy(union_canon_name->external_name.value, 
>> +           union_input_name->external_name.value, 
>> +           union_input_name->external_name.length);
>> +    union_canon_name->external_name.length = 
>> +                      union_input_name->external_name.length; 
>> +   
>>      if (union_input_name->name_type != GSS_C_NO_OID) {
>>  	status = generic_gss_copy_oid(minor_status,
>>  				      union_input_name->name_type,
> 
>> diff --git a/src/g_initialize.c b/src1/g_initialize.c
>> index 82fcce1..200f173 100644
>> --- a/src/g_initialize.c
>> +++ b/src/g_initialize.c
>>
>> Fix the warning for getuid, geteuid
>> g_initialize.c: In function 'linux_initialize':
>> g_initialize.c:275:5: warning: implicit declaration of function 'getuid' [-Wimplicit-function-declaration]
>> g_initialize.c:275:5: warning: implicit declaration of function 'geteuid' [-Wimplicit-function-declaration]
>>
>> Upstream-Status: Pending
>> Signed-off-by: Yao Zhao <yao.zhao@xxxxxxxxxxxxx>
>>
>> @@ -29,6 +29,8 @@
>>  #include "mglueP.h"
>>  #include <stdlib.h>
>>  
>> +#include <unistd.h>   /*getuid, geteuid */
>> +#include <sys/types.h>
>>  #include <stdio.h>
>>  #include <string.h>
>>  #include <ctype.h>
> 
>> --- a/src/g_inq_cred.c
>> +++ b/src/g_inq_cred.c
>> 1) add free if malloc failed for (*mechanisms)->elements
>> 2) g_inq_cred.c: In function 'gss_inquire_cred':
>> g_inq_cred.c:161:8: warning: passing argument 3 of 'generic_gss_copy_oid' from incompatible pointer type [enabled by default]
>>
>> Upstream-Status: Pending
>> Signed-off-by: Yao Zhao <yao.zhao@xxxxxxxxxxxxx>
>>
>> @@ -152,13 +152,15 @@ gss_OID_set *		mechanisms;
>>  			     union_cred->count);
>>  	if ((*mechanisms)->elements == NULL) {
>>  	    *minor_status = ENOMEM;
>> +	    free(*mechanisms);
>> +	    *mechanisms = GSS_C_NO_OID_SET;
>>  	    return (GSS_S_FAILURE);
>>  	}
>>  
>>  	for (i=0; i < union_cred->count; i++) {
>> -	    status = generic_gss_copy_oid(minor_status,
>> +	    status = generic_gss_add_oid_set_member(minor_status,
>>  	    				  &union_cred->mechs_array[i],
>> -					  &((*mechanisms)->elements[i]));
>> +					  mechanisms);
>>  	    if (status != GSS_S_COMPLETE)
>>  	        break;
>>  	}
> 
>> --- a/src/mglueP.h
>> +++ b/src/mglueP.h
>> fix the warning:
>> warning: implicit declaration of function 'generic_gss_copy_oid_set' [-Wimplicit-function-declaration]
>>
>> Upstream-Status: Pending
>> Signed-off-by: Yao Zhao <yao.zhao@xxxxxxxxxxxxx>
>>
>> @@ -447,6 +447,12 @@ OM_uint32 generic_gss_copy_oid
>>  	    gss_OID *		/* new_oid */
>>  	    );
>>  
>> +OM_uint32 generic_gss_copy_oid_set
>> +	   (OM_uint32 *minor_status,	/* minor_status */
>> +	    const gss_OID_set_desc * const oidset,	/* oid */
>> +	    gss_OID_set *new_oidset			/* new_oid */
>> +	   );
>> +
>>  OM_uint32 generic_gss_create_empty_oid_set
>>  	   (OM_uint32 *,	/* minor_status */
>>  	    gss_OID_set *	/* oid_set */
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux