svn rev #25089: trunk/src/appl/gss-sample/

hartmans@MIT.EDU hartmans at MIT.EDU
Tue Aug 9 16:07:39 EDT 2011


http://src.mit.edu/fisheye/changelog/krb5/?cs=25089
Commit By: hartmans
Log Message:
Windows fixes for gss-client.c

close(s) -> closesocket(s)
#include "port-sockets.h" (for closesocket())
#include "winsock.h" -> #include "winsock2.h" for consistency with port-sockets.h
call WSAStartup() before using sockets functions on Windows

Signed-off-by: Kevin Wasserman <kevin.wasserman at painless-security.com>
Signed-off-by: Sam Hartman <hartmans at painless-security.com>


Changed Files:
U   trunk/src/appl/gss-sample/gss-client.c
Modified: trunk/src/appl/gss-sample/gss-client.c
===================================================================
--- trunk/src/appl/gss-sample/gss-client.c	2011-08-09 20:07:34 UTC (rev 25088)
+++ trunk/src/appl/gss-sample/gss-client.c	2011-08-09 20:07:39 UTC (rev 25089)
@@ -49,7 +49,7 @@
 #include <string.h>
 #ifdef _WIN32
 #include <windows.h>
-#include <winsock.h>
+#include <winsock2.h>
 #else
 #include <assert.h>
 #include <unistd.h>
@@ -67,6 +67,7 @@
 #include <gssapi/gssapi_krb5.h>
 #include <gssapi/gssapi_ext.h>
 #include "gss-misc.h"
+#include "port-sockets.h"
 
 static int verbose = 1;
 static int spnego = 0;
@@ -113,6 +114,15 @@
     struct sockaddr_in saddr;
     struct hostent *hp;
     int     s;
+#ifdef _WIN32
+    WSADATA wsadata;
+    int wsastartuperror = WSAStartup(0x202, &wsadata);
+    if (wsastartuperror)
+    {
+        fprintf(stderr, "WSAStartup error: %x\n", wsastartuperror);
+        return -1;
+    }
+#endif
 
     if ((hp = gethostbyname(host)) == NULL) {
         fprintf(stderr, "Unknown host: %s\n", host);
@@ -129,7 +139,7 @@
     }
     if (connect(s, (struct sockaddr *) &saddr, sizeof(saddr)) < 0) {
         perror("connecting to server");
-        (void) close(s);
+        (void) closesocket(s);
         return -1;
     }
     return s;
@@ -462,7 +472,7 @@
     if (client_establish_context(s, service_name, gss_flags, auth_flag,
                                  v1_format, oid, username, password,
                                  &context, &ret_flags) < 0) {
-        (void) close(s);
+        (void) closesocket(s);
         return -1;
     }
 
@@ -560,7 +570,7 @@
                          &in_buf, &state, &out_buf);
             if (maj_stat != GSS_S_COMPLETE) {
                 display_status("wrapping message", maj_stat, min_stat);
-                (void) close(s);
+                (void) closesocket(s);
                 (void) gss_delete_sec_context(&min_stat, &context,
                                               GSS_C_NO_BUFFER);
                 return -1;
@@ -578,7 +588,7 @@
                               (encrypt_flag ? TOKEN_ENCRYPTED : 0) |
                               (mic_flag ? TOKEN_SEND_MIC : 0))),
                        &out_buf) < 0) {
-            (void) close(s);
+            (void) closesocket(s);
             (void) gss_delete_sec_context(&min_stat, &context,
                                           GSS_C_NO_BUFFER);
             return -1;
@@ -588,7 +598,7 @@
 
         /* Read signature block into out_buf */
         if (recv_token(s, &token_flags, &out_buf) < 0) {
-            (void) close(s);
+            (void) closesocket(s);
             (void) gss_delete_sec_context(&min_stat, &context,
                                           GSS_C_NO_BUFFER);
             return -1;
@@ -600,7 +610,7 @@
                                       &out_buf, &qop_state);
             if (maj_stat != GSS_S_COMPLETE) {
                 display_status("verifying signature", maj_stat, min_stat);
-                (void) close(s);
+                (void) closesocket(s);
                 (void) gss_delete_sec_context(&min_stat, &context,
                                               GSS_C_NO_BUFFER);
                 return -1;
@@ -628,7 +638,7 @@
         maj_stat = gss_delete_sec_context(&min_stat, &context, &out_buf);
         if (maj_stat != GSS_S_COMPLETE) {
             display_status("deleting context", maj_stat, min_stat);
-            (void) close(s);
+            (void) closesocket(s);
             (void) gss_delete_sec_context(&min_stat, &context,
                                           GSS_C_NO_BUFFER);
             return -1;
@@ -637,7 +647,7 @@
         (void) gss_release_buffer(&min_stat, &out_buf);
     }
 
-    (void) close(s);
+    (void) closesocket(s);
 
     return 0;
 }




More information about the cvs-krb5 mailing list