linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH]fix bugs and compiling warnings in libgssglue
@ 2012-09-17 19:07 Yao Zhao
  2012-10-19 12:26 ` J. Bruce Fields
  0 siblings, 1 reply; 8+ messages in thread
From: Yao Zhao @ 2012-09-17 19:07 UTC (permalink / raw)
  To: linux-nfs

[-- Attachment #1: Type: text/plain, Size: 110 bytes --]

Hi,

The 4 attached patches fixed a couple of warnings and bug found when 
compiling libgssglue.

thanks,
yao

[-- Attachment #2: libgssglue-canon-name.patch --]
[-- Type: text/x-patch, Size: 1990 bytes --]

--- 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@windriver.com>

@@ -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,

[-- Attachment #3: libgssglue-g-initialize.patch --]
[-- Type: text/x-patch, Size: 701 bytes --]

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@windriver.com>

@@ -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>

[-- Attachment #4: libgssglue-gss-inq-cred.patch --]
[-- Type: text/x-patch, Size: 913 bytes --]

--- 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@windriver.com>

@@ -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;
 	}

[-- Attachment #5: libgssglue-mglueP.patch --]
[-- Type: text/x-patch, Size: 641 bytes --]

--- 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@windriver.com>

@@ -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 */

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-01-23 20:48 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-17 19:07 [PATCH]fix bugs and compiling warnings in libgssglue Yao Zhao
2012-10-19 12:26 ` J. Bruce Fields
2012-10-19 14:20   ` Steve Dickson
2013-01-21 20:59     ` Yao Zhao
2013-01-23 18:21       ` Steve Dickson
2013-01-23 18:23         ` Yao Zhao
2013-01-23 20:07           ` Steve Dickson
2013-01-23 20:47             ` Yao Zhao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).