Fix buffer overrun
authorMichael Rasmussen <mir@datanom.net>
Fri, 9 Oct 2015 17:06:57 +0000 (19:06 +0200)
committerMichael Rasmussen <mir@datanom.net>
Fri, 9 Oct 2015 17:06:57 +0000 (19:06 +0200)
src/plugins/clamd/libclamd/clamd-plugin.c

index 5f58cfad97ff468ac35ba563f34d8200c56f7701..dd6148121753243b55f6b822e27ebc4380af5b19 100644 (file)
@@ -369,6 +369,7 @@ Clamd_Stat clamd_init(Clamd_Socket* config) {
        }
        memset(buf, '\0', sizeof(buf));
        while ((n_read = read(sock, buf, BUFSIZ)) > 0) {
        }
        memset(buf, '\0', sizeof(buf));
        while ((n_read = read(sock, buf, BUFSIZ)) > 0) {
+               n_read = n_read < BUFSIZ ? n_read : BUFSIZ - 1;
                buf[n_read] = '\0';
                if (buf[strlen(buf) - 1] == '\n')
                        buf[strlen(buf) - 1] = '\0';
                buf[n_read] = '\0';
                if (buf[strlen(buf) - 1] == '\n')
                        buf[strlen(buf) - 1] = '\0';
@@ -526,6 +527,7 @@ Clamd_Stat clamd_verify_email(const gchar* path, response* result) {
                g_free(command);
                memset(buf, '\0', sizeof(buf));
                while ((n_read = read(sock, buf, BUFSIZ)) > 0) {
                g_free(command);
                memset(buf, '\0', sizeof(buf));
                while ((n_read = read(sock, buf, BUFSIZ)) > 0) {
+                       n_read = n_read < BUFSIZ ? n_read : BUFSIZ - 1;
                        buf[n_read] = '\0';
                        if (buf[strlen(buf) - 1] == '\n')
                                buf[strlen(buf) - 1] = '\0';
                        buf[n_read] = '\0';
                        if (buf[strlen(buf) - 1] == '\n')
                                buf[strlen(buf) - 1] = '\0';