Changeset: 44da5d740dcb for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=44da5d740dcb
Modified Files:
        gdk/gdk_bbp.c
        gdk/gdk_system.c
        gdk/gdk_system.h
        monetdb5/modules/mal/mal_mapi.c
Branch: Apr2019
Log Message:

Fix the fix.


diffs (99 lines):

diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -2851,10 +2851,10 @@ BBPbackup(BAT *b, bool subcommit)
        if (!s)
                goto fail;
 
-       slen = strlen(s);
+       slen = strlen(++s);
        if (slen >= sizeof(nme))
                goto fail;
-       memcpy(nme, ++s, slen + 1);
+       memcpy(nme, s, slen + 1);
        srcdir[s - srcdir] = 0;
 
        if (b->ttype != TYPE_void &&
diff --git a/gdk/gdk_system.c b/gdk/gdk_system.c
--- a/gdk/gdk_system.c
+++ b/gdk/gdk_system.c
@@ -716,10 +716,15 @@ MT_create_thread(MT_Id *t, void (*f) (vo
        size_t tlen;
 
        join_threads();
-       if (!threadname) {
+       if (threadname == NULL) {
                fprintf(stderr, "#MT_create_thread: thread must have a name\n");
                return -1;
        }
+       tlen = strlen(threadname);
+       if (tlen >= sizeof(p->threadname)) {
+               fprintf(stderr, "#MT_create_thread: thread's name is too 
large\n");
+               return -1;
+       }
        if ((ret = pthread_attr_init(&attr)) != 0) {
                fprintf(stderr,
                        "#MT_create_thread: cannot init pthread attr: %s\n",
@@ -749,13 +754,6 @@ MT_create_thread(MT_Id *t, void (*f) (vo
        };
        ATOMIC_INIT(&p->exited, 0);
 
-       tlen = strlen(threadname);
-       if (tlen >= sizeof(p->threadname)) {
-               fprintf(stderr, "#MT_create_thread: thread's name is too 
large\n");
-               pthread_attr_destroy(&attr);
-               free(p);
-               return -1;
-       }
        memcpy(p->threadname, threadname, tlen + 1);
        pthread_mutex_lock(&posthread_lock);
        p->next = posthreads;
diff --git a/gdk/gdk_system.h b/gdk/gdk_system.h
--- a/gdk/gdk_system.h
+++ b/gdk/gdk_system.h
@@ -456,17 +456,17 @@ typedef struct MT_Lock {
                _DBG_LOCK_COUNT_2(l);                                   \
        } while (0)
 
-#define MT_lock_init(l, n)                                     \
-       do {                                                    \
-               size_t nlen; \
-               assert(n); \
-               ATOMIC_CLEAR(&(l)->lock);                       \
-               nlen = strlen(n); \
-               if (nlen >= sizeof((l)->name)) \
-                       nlen = sizeof((l)->name) - 1; \
-               memcpy((l)->name, (n), nlen + 1); \
-               (l)->name[sizeof((l)->name) - 1] = 0; \
-               _DBG_LOCK_INIT(l);                              \
+#define MT_lock_init(l, n)                             \
+       do {                                            \
+               size_t nlen;                            \
+               assert(n);                              \
+               ATOMIC_CLEAR(&(l)->lock);               \
+               nlen = strlen(n);                       \
+               if (nlen >= sizeof((l)->name))          \
+                       nlen = sizeof((l)->name) - 1;   \
+               memcpy((l)->name, (n), nlen + 1);       \
+               (l)->name[sizeof((l)->name) - 1] = 0;   \
+               _DBG_LOCK_INIT(l);                      \
        } while (0)
 
 #define MT_lock_unset(l)                                       \
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -748,12 +748,11 @@ SERVERlisten(int port, const char *usock
                userver.sun_family = AF_UNIX;
                ulen = strlen(usockfile);
                if (ulen >= sizeof(userver.sun_path)) {
-                       char *e = createException(IO, "mal_mapi.listen", 
"usockfile name is too large");
                        if (sock != INVALID_SOCKET)
                                closesocket(sock);
                        closesocket(usock);
                        GDKfree(psock);
-                       return e;
+                       throw(IO, "mal_mapi.listen", "usockfile name is too 
large");
                }
                memcpy(userver.sun_path, usockfile, ulen + 1);
                length = (SOCKLEN) sizeof(userver);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to