Changeset: a569d946f5d0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a569d946f5d0
Modified Files:
        tools/merovingian/daemon/client.c
Branch: Nov2019
Log Message:

Move challenge generation to before starting the client thread.
Also see changeset 7a502e565fff which is another occurrence of the
same problem.


diffs (37 lines):

diff --git a/tools/merovingian/daemon/client.c 
b/tools/merovingian/daemon/client.c
--- a/tools/merovingian/daemon/client.c
+++ b/tools/merovingian/daemon/client.c
@@ -50,6 +50,7 @@ struct clientdata {
        int sock;
        bool isusock;
        struct threads *self;
+       char challenge[32];
 };
 
 static void *
@@ -80,6 +81,7 @@ handleClient(void *data)
        sock = ((struct clientdata *) data)->sock;
        isusock = ((struct clientdata *) data)->isusock;
        self = ((struct clientdata *) data)->self;
+       memcpy(chal, ((struct clientdata *) data)->challenge, sizeof(chal));
        free(data);
        fdin = socket_rstream(sock, "merovingian<-client (read)");
        if (fdin == 0) {
@@ -112,8 +114,6 @@ handleClient(void *data)
        }
 
        /* note: since Jan2012 we speak proto 9 for control connections */
-       chal[31] = '\0';
-       generateSalt(chal, 31);
        mnstr_printf(fout, "%s:merovingian:9:%s:%s:%s:",
                        chal,
                        mcrypt_getHashAlgorithms(),
@@ -624,6 +624,8 @@ acceptConnections(int sock, int usock)
                data->isusock = isusock;
                p->dead = 0;
                data->self = p;
+               data->challenge[31] = '\0';
+               generateSalt(data->challenge, 31);
                if (pthread_create(&p->tid, NULL, handleClient, data) == 0) {
                        p->next = threads;
                        threads = p;
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to