util_ordering.c (g_order_free):
authorTheodore Tso <tytso@mit.edu>
Mon, 25 May 1998 01:44:13 +0000 (01:44 +0000)
committerTheodore Tso <tytso@mit.edu>
Mon, 25 May 1998 01:44:13 +0000 (01:44 +0000)
rel_oid_set.c (generic_gss_release_oid_set):
disp_major_status.c: General lint cleanup.

util_oid.c (g_copy_OID_set): Copy the OID set with entirely dynamic
memory (don't alias the contents of the OID set).

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@10576 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/gssapi/generic/ChangeLog
src/lib/gssapi/generic/disp_major_status.c
src/lib/gssapi/generic/rel_oid_set.c
src/lib/gssapi/generic/util_oid.c
src/lib/gssapi/generic/util_ordering.c

index 13f5718cfe0972c55e7c55382ac70f96d9e1d926..a71aeb1cd7bf1e5bdb341b1e87fcdc8b6b8ba57b 100644 (file)
@@ -1,3 +1,12 @@
+1998-05-18  Theodore Ts'o  <tytso@rsts-11.mit.edu>
+
+       * util_ordering.c (g_order_free): 
+       * rel_oid_set.c (generic_gss_release_oid_set): 
+       * disp_major_status.c: General lint cleanup.
+
+       * util_oid.c (g_copy_OID_set): Copy the OID set with entirely
+               dynamic memory (don't alias the contents of the OID set).
+
 Wed Apr  1 16:33:27 1998  Tom Yu  <tlyu@mit.edu>
 
        * disp_major_status.c (g_display_major_status): Fix a typo in
index df1e3a75cea1683edbcc6a6ae6c46d08c4f6f841..899592ada1302b7230cdf47d49d99f89ccf40788 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "gssapiP_generic.h"
 #include <string.h>
+#include <stdio.h>
 
 /*
  * $Id$
@@ -135,7 +136,7 @@ static OM_uint32 display_calling(minor_status, code, status_string)
 {
    const char *str;
 
-   if (str = GSS_CALLING_ERROR_STR(code)) {
+   if ((str = GSS_CALLING_ERROR_STR(code))) {
       if (! g_make_string_buffer(str, status_string)) {
         *minor_status = ENOMEM;
         return(GSS_S_FAILURE);
@@ -160,7 +161,7 @@ static OM_uint32 display_routine(minor_status, code, status_string)
 {
    const char *str;
 
-   if (str = GSS_ROUTINE_ERROR_STR(code)) {
+   if ((str = GSS_ROUTINE_ERROR_STR(code))) {
       if (! g_make_string_buffer(str, status_string)) {
         *minor_status = ENOMEM;
         return(GSS_S_FAILURE);
@@ -185,7 +186,7 @@ static OM_uint32 display_bit(minor_status, code, status_string)
 {
    const char *str;
 
-   if (str = GSS_SINFO_STR(code)) {
+   if ((str = GSS_SINFO_STR(code))) {
       if (! g_make_string_buffer(str, status_string)) {
         *minor_status = ENOMEM;
         return(GSS_S_FAILURE);
@@ -234,9 +235,9 @@ OM_uint32 g_display_major_status(minor_status, status_value,
    /*** do routine error */
 
    if (*message_context == 0) {
-      if (tmp = GSS_ROUTINE_ERROR(status_value)) {
+      if ((tmp = GSS_ROUTINE_ERROR(status_value))) {
         status_value -= tmp;
-        if (ret = display_routine(minor_status, tmp, status_string))
+        if ((ret = display_routine(minor_status, tmp, status_string)))
            return(ret);
         *minor_status = 0;
         if (status_value) {
@@ -256,9 +257,9 @@ OM_uint32 g_display_major_status(minor_status, status_value,
    /*** do calling error */
 
    if (*message_context == 1) {
-      if (tmp = GSS_CALLING_ERROR(status_value)) {
+      if ((tmp = GSS_CALLING_ERROR(status_value))) {
         status_value -= tmp;
-        if (ret = display_calling(minor_status, tmp, status_string))
+        if ((ret = display_calling(minor_status, tmp, status_string)))
            return(ret);
         *minor_status = 0;
         if (status_value) {
@@ -295,7 +296,7 @@ OM_uint32 g_display_major_status(minor_status, status_value,
    for (bit=0; (((OM_uint32) 1)<<bit) != LSBGET(tmp); bit++) ;
 
    /* print it */
-   if (ret = display_bit(minor_status, bit, status_string))
+   if ((ret = display_bit(minor_status, bit, status_string)))
       return(ret);
 
    /* compute the new status_value/message_context */
index e3a4ff07e574de146b28549e6150c121c2973a5a..bd7f3cb2cfee1984fab98d75d78566e3d3460ba8 100644 (file)
@@ -40,7 +40,6 @@ generic_gss_release_oid_set (minor_status,
      gss_OID_set *             set;
 {
     size_t i;
-    gss_OID oid;
     if (minor_status)
        *minor_status = 0;
 
index 8843a7ff6a8dc5bdec7cab04b363a9a83a971007..60b1e157eeaaad0a4239dfd1ab3061bfda4dc96c 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 #include "gssapiP_generic.h"
+#include "string.h"
 
 /*
  * $Id$
@@ -32,7 +33,9 @@ g_copy_OID_set(in, out)
      gss_OID_set *out;
 {
    gss_OID_set copy;
-   size_t i;
+   gss_OID     new_oid;
+   size_t      i;
+   size_t      len;
 
    *out = NULL;
 
@@ -41,15 +44,34 @@ g_copy_OID_set(in, out)
       return(0);
 
    copy->count = in->count;
+   len = sizeof(gss_OID_desc) * copy->count;
 
    if ((copy->elements = 
-       (gss_OID_desc *) xmalloc(sizeof(gss_OID_desc)*copy->count)) == NULL) {
+       (gss_OID_desc *) xmalloc( len )) == NULL) {
       xfree(copy);
       return(0);
    }
 
-   for (i=0; i<in->count; i++)
-      copy->elements[i] = in->elements[i];
+   memset( copy->elements, 0, len );
+   
+   for (i=0; i<in->count; i++) {
+      len = in->elements[i].length;
+      new_oid = &(copy->elements[i]);
+      new_oid->elements = xmalloc( len );
+      if ( new_oid->elements == NULL ) {
+         while( i>0 ) {
+            i--;
+            new_oid = &(copy->elements[i]);
+            if ( new_oid->elements!=NULL )
+               xfree( new_oid->elements );
+         }
+         xfree( copy->elements );
+         xfree( copy );
+         return( 0 );
+      }
+      memcpy( new_oid->elements, in->elements[i].elements, len );
+      new_oid->length = len;
+   }
 
    *out = copy;
    return(1);
index b5b84234c04b218758df843f49a92477321db9e2..21a8b0641fee8f4cd0807400cfc270c000fa06cc 100644 (file)
@@ -168,7 +168,6 @@ void
 g_order_free(void **vqueue)
 {
    queue *q;
-   int i;
    
    q = (queue *) (*vqueue);