]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/alock.c
fix previous commit (ITS#5819)
[openldap] / servers / slapd / alock.c
index a5377a560d04e652a2aa15f41ef9091612f26cc0..1a50a399f159cc2176cdf1e433ca1c93528bacd8 100644 (file)
@@ -24,6 +24,7 @@
 #if SLAPD_BDB || SLAPD_HDB
 
 #include "alock.h"
+#include "lutil.h"
 
 #include <ac/stdlib.h>
 #include <ac/string.h>
@@ -177,7 +178,7 @@ alock_read_iattr ( unsigned char * bufptr )
        assert (bufptr != NULL);
 
        bufptr += sizeof (unsigned long int);
-       for (count=0; count <= sizeof (unsigned long int); ++count) {
+       for (count=0; count <= (int) sizeof (unsigned long int); ++count) {
                val <<= 8;
                val += (unsigned long int) *bufptr--;
        }
@@ -239,6 +240,9 @@ alock_read_slot ( alock_info_t * info,
 
        if (slot_data->al_appname) free (slot_data->al_appname);
        slot_data->al_appname = calloc (1, ALOCK_MAX_APPNAME);
+       if (slot_data->al_appname == NULL) {
+               return -1;
+       }
        strncpy (slot_data->al_appname, (char *)slotbuf+32, ALOCK_MAX_APPNAME-1);
        (slot_data->al_appname) [ALOCK_MAX_APPNAME-1] = '\0';
 
@@ -335,6 +339,7 @@ alock_open ( alock_info_t * info,
        char * filename;
        int res, max_slot;
        int dirty_count, live_count, nosave;
+       char *ptr;
 
        assert (info != NULL);
        assert (appname != NULL);
@@ -345,12 +350,19 @@ alock_open ( alock_info_t * info,
        slot_data.al_stamp = time(NULL);
        slot_data.al_pid = getpid();
        slot_data.al_appname = calloc (1, ALOCK_MAX_APPNAME);
+       if (slot_data.al_appname == NULL) {
+               return ALOCK_UNSTABLE;
+       }
        strncpy (slot_data.al_appname, appname, ALOCK_MAX_APPNAME-1);
        slot_data.al_appname [ALOCK_MAX_APPNAME-1] = '\0';
 
        filename = calloc (1, strlen (envdir) + strlen ("/alock") + 1);
-       strcpy (filename, envdir);
-       strcat (filename, "/alock");
+       if (filename == NULL ) {
+               free (slot_data.al_appname);
+               return ALOCK_UNSTABLE;
+       }
+       ptr = lutil_strcopy(filename, envdir);
+       lutil_strcopy(ptr, "/alock");
        info->al_fd = open (filename, O_CREAT|O_RDWR, 0666);
        free (filename);
        if (info->al_fd < 0) {