]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - server.c
afs: Fix a shm leak.
[paraslash.git] / server.c
index 5823cb28d5f458e9b885bf6cddb2795275ac3aa9..9187b63fa6ae20aa525fa435010f1675b1458b0d 100644 (file)
--- a/server.c
+++ b/server.c
@@ -115,7 +115,6 @@ int mmd_mutex;
 
 /** The file containing user information (public key, permissions). */
 static char *user_list_file = NULL;
-static int mmd_shm_id;
 
 
 /** The task responsible for server command handling. */
@@ -162,16 +161,16 @@ static void init_colors_or_die(void)
 static void init_ipc_or_die(void)
 {
        void *shm;
-       int ret = shm_new(sizeof(struct misc_meta_data));
+       int shmid, ret = shm_new(sizeof(struct misc_meta_data));
 
        if (ret < 0)
                goto err_out;
-
-       ret = shm_attach(ret, ATTACH_RW, &shm);
+       shmid = ret;
+       ret = shm_attach(shmid, ATTACH_RW, &shm);
+       shm_destroy(shmid);
        if (ret < 0)
                goto err_out;
        mmd = shm;
-       mmd_shm_id = ret;
 
        ret = mutex_new();
        if (ret < 0)
@@ -303,8 +302,6 @@ genocide:
                kill(0, SIGTERM);
                mutex_destroy(mmd_mutex);
                shm_detach(mmd);
-               shm_destroy(mmd_shm_id);
-
                exit(EXIT_FAILURE);
        }
 }