Fix denial of service - memory corruption.
[samba.git] / source3 / lib / readline.c
index cafb5a9f624b50d832e9ba1ce84f03726cbc84b4..70a82f27ab7b5abf325af0051de2480c5ddd9d23 100644 (file)
@@ -91,6 +91,11 @@ static char *smb_readline_replacement(const char *prompt, void (*callback)(void)
                timeout.tv_sec = 5;
                timeout.tv_usec = 0;
 
+               if (fd < 0 || fd >= FD_SETSIZE) {
+                       errno = EBADF;
+                       break;
+               }
+
                FD_ZERO(&fds);
                FD_SET(fd,&fds);
 
@@ -105,6 +110,7 @@ static char *smb_readline_replacement(const char *prompt, void (*callback)(void)
                        callback();
                }
        }
+       SAFE_FREE(line);
        return NULL;
 }