Add initial meta-stx to support StarlingX build
[pti/rtp.git] / meta-stx / recipes-security / gssproxy / files / Fix-error-handling-in-gpm_send_buffer-gpm_recv_buffe.patch
diff --git a/meta-stx/recipes-security/gssproxy/files/Fix-error-handling-in-gpm_send_buffer-gpm_recv_buffe.patch b/meta-stx/recipes-security/gssproxy/files/Fix-error-handling-in-gpm_send_buffer-gpm_recv_buffe.patch
new file mode 100644 (file)
index 0000000..3dad153
--- /dev/null
@@ -0,0 +1,61 @@
+From 027596a3df85d11948f4fb3a28d27d6523645589 Mon Sep 17 00:00:00 2001
+From: Alexander Scheel <alexander.m.scheel@gmail.com>
+Date: Thu, 14 Sep 2017 11:24:39 -0500
+Subject: [PATCH] Fix error handling in gpm_send_buffer/gpm_recv_buffer
+
+Signed-off-by: Alexander Scheel <alexander.m.scheel@gmail.com>
+Reviewed-by: Robbie Harwood <rharwood@redhat.com>
+Merges: #213
+[rharwood@redhat.com: commit message formatting, copyright update]
+(cherry picked from commit f2530fc280dd84e6abc0f5475e261aa0d2ee2a21)
+---
+ proxy/src/client/gpm_common.c | 18 ++++++------------
+ 1 file changed, 6 insertions(+), 12 deletions(-)
+
+diff --git a/proxy/src/client/gpm_common.c b/proxy/src/client/gpm_common.c
+index b14e846..0d314fa 100644
+--- a/proxy/src/client/gpm_common.c
++++ b/proxy/src/client/gpm_common.c
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2011 the GSS-PROXY contributors, see COPYING for license */
++/* Copyright (C) 2011,2017 the GSS-PROXY contributors, see COPYING for license */
+ #include "gssapi_gpm.h"
+ #include <sys/types.h>
+@@ -415,10 +415,7 @@ static int gpm_send_buffer(struct gpm_ctx *gpmctx,
+     ret = 0;
+ done:
+-    if (ret) {
+-        /* on errors we can only close the fd and return */
+-        gpm_close_socket(gpmctx);
+-    }
++    /* we only need to return as gpm_retry_socket closes the socket */
+     return ret;
+ }
+@@ -488,9 +485,10 @@ static int gpm_recv_buffer(struct gpm_ctx *gpmctx,
+ done:
+     if (ret) {
+-        /* on errors we can only close the fd and return */
+-        gpm_close_socket(gpmctx);
+-        gpm_epoll_close(gpmctx);
++        /* on errors, free the buffer to prevent calling
++         * xdr_destroy(&xdr_reply_ctx); */
++        free(*buffer);
++        *buffer = NULL;
+     }
+     return ret;
+ }
+@@ -560,10 +558,6 @@ static int gpm_send_recv_loop(struct gpm_ctx *gpmctx, char *send_buffer,
+             /* Close and reopen socket before trying again */
+             ret = gpm_retry_socket(gpmctx);
+-            /* Free buffer and set it to NULL to prevent free(xdr_reply_ctx) */
+-            free(*recv_buffer);
+-            *recv_buffer = NULL;
+-
+             if (ret != 0)
+                 return ret;
+             ret = ETIMEDOUT;