File 0240-msgqueue_unlink.patch of Package sblim-sfcb

diff -up ./msgqueue.c.orig ./msgqueue.c
--- ./msgqueue.c.orig	2008-11-24 17:18:29.000000000 -0700
+++ ./msgqueue.c	2008-11-25 10:01:59.000000000 -0700
@@ -622,7 +622,7 @@ int getControlChars(char *id, char **val
 
 void stopLocalConnectServer()
 {
-   static struct sockaddr_un *serverAddr;
+   struct sockaddr_un serverAddr;
    int sock,size=0;
    unsigned long int l;
    char *path;
@@ -636,13 +636,10 @@ void stopLocalConnectServer()
       return;
    }
    
-   socklen_t serverAddrLen = offsetof(struct sockaddr_un, sun_path) +
-                             strlen(path) + 1;
-   serverAddr = alloca(serverAddrLen);
-   serverAddr->sun_family=AF_UNIX;
-   strcpy(serverAddr->sun_path,path);
+   serverAddr.sun_family=AF_UNIX;
+   strncpy(serverAddr.sun_path,path, sizeof(serverAddr.sun_path));
    
-   if (connect(sock,(const struct sockaddr*)serverAddr, serverAddrLen)<0) {
+   if (connect(sock,(const struct sockaddr*)&serverAddr, sizeof(serverAddr))<0) {
       perror("connect error");
       return;
    }
@@ -653,7 +650,7 @@ void stopLocalConnectServer()
 
 void localConnectServer()
 {
-   static struct sockaddr_un clientAddr,*serverAddr;
+   struct sockaddr_un clientAddr,serverAddr;
    int nsocket,ssocket;
    unsigned int cl, notDone=1;
    char *path,cMsg[264];
@@ -676,14 +673,11 @@ void localConnectServer()
       return;
    }
    
-   socklen_t serverAddrLen = offsetof(struct sockaddr_un, sun_path) +
-                             strlen(path) + 1;
-   serverAddr = alloca(serverAddrLen);
-   serverAddr->sun_family=AF_UNIX;
-   strncpy(serverAddr->sun_path,path,sizeof(serverAddr->sun_path));
+   serverAddr.sun_family=AF_UNIX;
+   strncpy(serverAddr.sun_path,path,sizeof(serverAddr.sun_path));
    unlink(path);
    
-   if (bind(ssocket,(const struct sockaddr*)serverAddr, serverAddrLen)<0) {
+   if (bind(ssocket,(const struct sockaddr*)&serverAddr, sizeof(serverAddr))<0) {
       perror("bind error");
       return;
    }
@@ -694,12 +688,12 @@ void localConnectServer()
    do {
      // sfcbSockets.send;
       cl=sizeof(clientAddr);
-      if ((nsocket=accept(ssocket,(struct sockaddr*)serverAddr,&cl))<0) {
+      if ((nsocket=accept(ssocket,(struct sockaddr*)&clientAddr,&cl))<0) {
          perror("accept error");
 
          /* Being interrupted isn't necessarily bad; try once more */
          if (errno == EINTR) {
-           if ((nsocket=accept(ssocket,(struct sockaddr*)serverAddr,&cl))<0) {
+           if ((nsocket=accept(ssocket,(struct sockaddr*)&clientAddr,&cl))<0) {
              perror("accept error (2)");
              return;
            }
openSUSE Build Service is sponsored by