[Pkg-gnupg-commit] [libassuan] 272/437: 2009-12-08 Marcus Brinkmann <marcus at g10code.de>

Eric Dorland eric at moszumanska.debian.org
Fri May 22 05:33:53 UTC 2015


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository libassuan.

commit bfa7d62f717be47b690806d68fcca9723c201e9e
Author: Marcus Brinkmann <mb at g10code.com>
Date:   Tue Dec 8 04:20:16 2009 +0000

    2009-12-08  Marcus Brinkmann  <marcus at g10code.de>
    
    	* assuan-socket.c (get_nonce): Cast buffer to unsigned.
    	(_assuan_sock_connect) [HAVE_W32_SYSTEM]: Drop ctx argument from
    	read_port_and_nonce invocation.
    	* system.c (assuan_fdopen) [HAVE_W32_SYSTEM]: Fix typo in variable
    	name.
    	(__assuan_spawn) [HAVE_W32_SYSTEM]: Fix types of fd and fdp.  Use
    	ASSUAN_INVALID_FD.  Add missing context argument to _assuan_free,
    	and fix call to _assuan_w32_strerror.  Set errno on error.
    	(__assuan_socketpair) [HAVE_W32_STRERROR]: Fix type of filedes
    	argument.
    	* assuan-pipe-connect.c (pipe_connect, assuan_pipe_connect,
    	socketpair_connect) [HAVE_W32_SYSTEM]: Fix type of fd_child_list.
    	* assuan-defs.h (_assuan_socketpair): Likewise for prototype.
    	* assuan.h (assuan_fd_from_posix_fd): New static inline function.
---
 NEWS                      |  2 ++
 src/ChangeLog             | 17 +++++++++++++++++
 src/assuan-defs.h         |  2 +-
 src/assuan-pipe-connect.c |  6 +++---
 src/assuan-socket.c       |  6 +++---
 src/assuan.h              | 10 ++++++++++
 src/system.c              | 29 +++++++++++++++--------------
 7 files changed, 51 insertions(+), 21 deletions(-)

diff --git a/NEWS b/NEWS
index 8d29117..cbd7243 100644
--- a/NEWS
+++ b/NEWS
@@ -52,6 +52,7 @@ assuan_socket_connect_ext      REMOVED
 assuan_pipe_connect            CHANGED: Take ctx arg instead of pointer to ctx.
 			       If NAME is NULL, ARGV will contain fork result.
 			       CHANGED: Is now what assuan_pipe_connect_ext was.
+			       CHANGED: Child fds are now assuan_fd_t.
 assuan_pipe_connect_ext	       REMOVED
 assuan_init_pipe_server        CHANGED: Take ctx arg instead of pointer to ctx.
                                CHANGED: Swallows fds (are closed at end).
@@ -90,6 +91,7 @@ assuan_peercred_t	       NEW
 assuan_get_peercred	       CHANGED: Return assuan_peercred_t.
 assuan_client_read_response    NEW
 assuan_client_parse_response   NEW
+assuan_fd_from_posix_fd	       NEW
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
diff --git a/src/ChangeLog b/src/ChangeLog
index fae9d9f..ff99e3a 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,20 @@
+2009-12-08  Marcus Brinkmann  <marcus at g10code.de>
+
+	* assuan-socket.c (get_nonce): Cast buffer to unsigned.
+	(_assuan_sock_connect) [HAVE_W32_SYSTEM]: Drop ctx argument from
+	read_port_and_nonce invocation.
+	* system.c (assuan_fdopen) [HAVE_W32_SYSTEM]: Fix typo in variable
+	name.
+	(__assuan_spawn) [HAVE_W32_SYSTEM]: Fix types of fd and fdp.  Use
+	ASSUAN_INVALID_FD.  Add missing context argument to _assuan_free,
+	and fix call to _assuan_w32_strerror.  Set errno on error.
+	(__assuan_socketpair) [HAVE_W32_STRERROR]: Fix type of filedes
+	argument.
+	* assuan-pipe-connect.c (pipe_connect, assuan_pipe_connect,
+	socketpair_connect) [HAVE_W32_SYSTEM]: Fix type of fd_child_list.
+	* assuan-defs.h (_assuan_socketpair): Likewise for prototype.
+	* assuan.h (assuan_fd_from_posix_fd): New static inline function.
+
 2009-12-03  Marcus Brinkmann  <marcus at g10code.de>
 
 	* assuan-logging.c: (log_cats): New static variable.
diff --git a/src/assuan-defs.h b/src/assuan-defs.h
index 06e0e8b..5e61bcb 100644
--- a/src/assuan-defs.h
+++ b/src/assuan-defs.h
@@ -246,7 +246,7 @@ int _assuan_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
 pid_t  _assuan_waitpid (assuan_context_t ctx, pid_t pid, int nowait,
 			int *status, int options);
 int _assuan_socketpair (assuan_context_t ctx, int namespace, int style,
-			int protocol, int filedes[2]);
+			int protocol, assuan_fd_t filedes[2]);
 
 extern struct assuan_system_hooks _assuan_system_hooks;
 
diff --git a/src/assuan-pipe-connect.c b/src/assuan-pipe-connect.c
index 4239459..2b8b264 100644
--- a/src/assuan-pipe-connect.c
+++ b/src/assuan-pipe-connect.c
@@ -144,7 +144,7 @@ at_pipe_fork_cb (void *opaque, int reserved)
 static gpg_error_t
 pipe_connect (assuan_context_t ctx,
 	      const char *name, const char **argv,
-	      int *fd_child_list,
+	      assuan_fd_t *fd_child_list,
 	      void (*atfork) (void *opaque, int reserved),
 	      void *atforkvalue, unsigned int flags)
 {
@@ -257,7 +257,7 @@ at_socketpair_fork_cb (void *opaque, int reserved)
 static gpg_error_t
 socketpair_connect (assuan_context_t ctx,
                     const char *name, const char **argv,
-                    int *fd_child_list,
+                    assuan_fd_t *fd_child_list,
                     void (*atfork) (void *opaque, int reserved),
                     void *atforkvalue)
 {
@@ -388,7 +388,7 @@ socketpair_connect (assuan_context_t ctx,
 gpg_error_t
 assuan_pipe_connect (assuan_context_t ctx,
 		     const char *name, const char *argv[],
-		     int *fd_child_list,
+		     assuan_fd_t *fd_child_list,
 		     void (*atfork) (void *opaque, int reserved),
 		     void *atforkvalue, unsigned int flags)
 {
diff --git a/src/assuan-socket.c b/src/assuan-socket.c
index 83ea9dd..1d20109 100644
--- a/src/assuan-socket.c
+++ b/src/assuan-socket.c
@@ -92,7 +92,7 @@ get_nonce (char *buffer, size_t nbytes)
     errno = ENODEV;
   else 
     {
-      if (!CryptGenRandom (prov, nbytes, buffer))
+      if (!CryptGenRandom (prov, nbytes, (unsigned char *) buffer))
         errno = ENODEV;
       else
         ret = 0;
@@ -178,7 +178,7 @@ _assuan_sock_connect (assuan_context_t ctx, assuan_fd_t sockfd,
       int ret;
       
       unaddr = (struct sockaddr_un *)addr;
-      if (read_port_and_nonce (ctx, unaddr->sun_path, &port, nonce))
+      if (read_port_and_nonce (unaddr->sun_path, &port, nonce))
         return -1;
       
       myaddr.sin_family = AF_INET;
@@ -308,7 +308,7 @@ _assuan_sock_get_nonce (assuan_context_t ctx, struct sockaddr *addr,
         }
       nonce->length = 16;
       unaddr = (struct sockaddr_un *)addr;
-      if (read_port_and_nonce (ctx, unaddr->sun_path, &port, nonce->nonce))
+      if (read_port_and_nonce (unaddr->sun_path, &port, nonce->nonce))
         return -1;
     }
   else
diff --git a/src/assuan.h b/src/assuan.h
index 1fd7192..abc549e 100644
--- a/src/assuan.h
+++ b/src/assuan.h
@@ -85,10 +85,20 @@ typedef struct assuan_context_s *assuan_context_t;
 typedef void *assuan_fd_t;
 #define ASSUAN_INVALID_FD ((void*)(-1))
 #define ASSUAN_INVALID_PID ((pid_t) -1)
+static inline assuan_fd_t
+assuan_fd_from_posix_fd (int fd)
+{
+  return (assuan_fd_t) _get_osfhandle (fd);
+}
 #else
 typedef int assuan_fd_t;
 #define ASSUAN_INVALID_FD (-1)
 #define ASSUAN_INVALID_PID ((pid_t) -1)
+static inline assuan_fd_t
+assuan_fd_from_posix_fd (int fd)
+{
+  return fd;
+}
 #endif
 
 assuan_fd_t assuan_fdopen (int fd);
diff --git a/src/system.c b/src/system.c
index afbe8a7..ad17854 100644
--- a/src/system.c
+++ b/src/system.c
@@ -51,12 +51,12 @@ assuan_fdopen (int fd)
   assuan_fd_t ifd = (assuan_fd_t) _get_osfhandle (fd);
   assuan_fd_t ofd;
 
-  if (! DuplicateHandle(GetCurrentProcess(), hfd, 
+  if (! DuplicateHandle(GetCurrentProcess(), ifd, 
 			GetCurrentProcess(), &ofd, 0,
 			TRUE, DUPLICATE_SAME_ACCESS))
     {
       errno = EIO;
-      return ASSUAN_INVALID_FD:
+      return ASSUAN_INVALID_FD;
     }
   return ofd;
 #else
@@ -540,8 +540,8 @@ __assuan_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
       0          /* Returns tid.  */
     };
   STARTUPINFO si;
-  int fd;
-  int *fdp;
+  assuan_fd_t fd;
+  assuan_fd_t *fdp;
   char *cmdline;
   HANDLE nullfd = INVALID_HANDLE_VALUE;
 
@@ -570,14 +570,14 @@ __assuan_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
 
   /* Dup stderr to /dev/null unless it is in the list of FDs to be
      passed to the child. */
-  fd = fileno (stderr);
+  fd = assuan_fd_from_posix_fd (fileno (stderr));
   fdp = fd_child_list;
   if (fdp)
     {
-      for (; *fdp != -1 && *fdp != fd; fdp++)
+      for (; *fdp != ASSUAN_INVALID_FD && *fdp != fd; fdp++)
         ;
     }
-  if (!fdp || *fdp == -1)
+  if (!fdp || *fdp == ASSUAN_INVALID_FD)
     {
       nullfd = CreateFile ("nul", GENERIC_WRITE,
                            FILE_SHARE_READ | FILE_SHARE_WRITE,
@@ -585,14 +585,15 @@ __assuan_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
       if (nullfd == INVALID_HANDLE_VALUE)
         {
 	  TRACE1 (ctx, ASSUAN_LOG_SYSIO, "__assuan_spawn", ctx,
-		  "can't open `nul': %s", w32_strerror (ctx, -1));
-          _assuan_free (cmdline);
+		  "can't open `nul': %s", _assuan_w32_strerror (ctx, -1));
+          _assuan_free (ctx, cmdline);
+          errno = EIO;
           return -1;
         }
       si.hStdError = nullfd;
     }
   else
-    si.hStdError = (void*)_get_osfhandle (fd);
+    si.hStdError = fd;
 
 
   /* Note: We inherit all handles flagged as inheritable.  This seems
@@ -616,8 +617,8 @@ __assuan_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
                       ))
     {
       TRACE1 (ctx, ASSUAN_LOG_SYSIO, "pipe_connect_w32", ctx,
-	      "CreateProcess failed: %s", w32_strerror (ctx, -1));
-      _assuan_free (cmdline);
+	      "CreateProcess failed: %s", _assuan_w32_strerror (ctx, -1));
+      _assuan_free (ctx, cmdline);
       if (nullfd != INVALID_HANDLE_VALUE)
         CloseHandle (nullfd);
 
@@ -625,7 +626,7 @@ __assuan_spawn (assuan_context_t ctx, pid_t *r_pid, const char *name,
       return -1;
     }
 
-  _assuan_free (cmdline);
+  _assuan_free (ctx, cmdline);
   if (nullfd != INVALID_HANDLE_VALUE)
     CloseHandle (nullfd);
 
@@ -882,7 +883,7 @@ _assuan_waitpid (assuan_context_t ctx, pid_t pid, int action,
 

 int
 __assuan_socketpair (assuan_context_t ctx, int namespace, int style,
-		     int protocol, int filedes[2])
+		     int protocol, assuan_fd_t filedes[2])
 {
 #if HAVE_W32_SYSTEM
   errno = ENOSYS;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/libassuan.git



More information about the Pkg-gnupg-commit mailing list