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