handle_connect(): Don't send anything to non-authorized clients.
[paraslash.git] / command.c
index 57e851f938c700044be20b62226dc07fae63c07e..f9ef6cd75ab8733408d3c2542230ae806281bf85 100644 (file)
--- a/command.c
+++ b/command.c
@@ -458,10 +458,8 @@ int com_help(struct rc4_context *rc4c, int argc, char * const * argv)
        }
        /* argument given for help */
        cmd = get_cmd_ptr(argv[1], &handler);
-       if (!cmd) {
-               free(handler);
+       if (!cmd)
                return -E_BAD_CMD;
-       }
        perms = cmd_perms_itohuman(cmd->perms);
        ret = rc4_send_va_buffer(rc4c,
                "%s - %s\n\n"
@@ -745,24 +743,24 @@ __noreturn void handle_connect(int fd, const char *peername)
        /* we need a blocking fd here as recv() might return EAGAIN otherwise. */
        ret = mark_fd_blocking(fd);
        if (ret < 0)
-               goto err_out;
+               goto net_err;
        /* send Welcome message */
        ret = send_va_buffer(fd, "This is para_server, version "
                PACKAGE_VERSION  ".\n" );
        if (ret < 0)
-               goto err_out;
+               goto net_err;
        /* recv auth request line */
        ret = recv_buffer(fd, buf, sizeof(buf));
        if (ret < 0)
-               goto err_out;
+               goto net_err;
        if (ret < 10) {
                ret = -E_AUTH_REQUEST;
-               goto err_out;
+               goto net_err;
        }
        numbytes = ret;
        ret = -E_AUTH_REQUEST;
        if (strncmp(buf, AUTH_REQUEST_MSG, strlen(AUTH_REQUEST_MSG)))
-               goto err_out;
+               goto net_err;
        p = buf + strlen(AUTH_REQUEST_MSG);
        PARA_DEBUG_LOG("received auth request for user %s\n", p);
        ret = -E_BAD_USER;
@@ -772,7 +770,7 @@ __noreturn void handle_connect(int fd, const char *peername)
                ret = para_encrypt_buffer(u->rsa, rand_buf, sizeof(rand_buf),
                        (unsigned char *)buf);
                if (ret < 0)
-                       goto err_out;
+                       goto net_err;
                numbytes = ret;
        } else {
                /*