Stefan Beller <[email protected]> writes:

> +static struct string_list *read_push_options(void)
> +{
> +     struct string_list *ret = xmalloc(sizeof(*ret));
> +     string_list_init(ret, 1);
> +
> +     while (1) {
> +             char *line, *lf;
> +             int len;
> +
> +             line = packet_read_line(0, &len);
> +
> +             if (!line)
> +                     break;
> +
> +             /*
> +             * NEEDSWORK: expose the limitations to be configurable;
> +             * Once the limit can be lifted, include a way for payloads
> +             * larger than one pkt, e.g use last byte to indicate if
> +             * the push option continues in the next packet or implement
> +             * larger packets.
> +             */
> +             if (len > LARGE_PACKET_MAX - 1) {

packet_read_line() calls packet_read_line_generic() that calls
packet_read() with the fixed packet_buffer[] that is sized to be
LARGE_PACKET_MAX.

Can this check even trigger?

> +                     /*
> +                      * NEEDSWORK: The error message in die(..) is not
> +                      * transmitted in call cases, so ideally all die(..)
> +                      * calls are prefixed with rp_error and then we can
> +                      * combine rp_error && die into one helper function.
> +                      */
> +                     rp_error("protocol error: server configuration allows 
> push "
> +                              "options of size up to %d bytes",
> +                              LARGE_PACKET_MAX - 1);
> +                     die("protocol error: push options too large");
> +             }

> +             lf = strchr(line, '\n');
> +             if (lf)
> +                     *lf = '\0';

packet_read_line() -> packet_read_line_generic() calls packet_read()
with PACKET_READ_CHOMP_NEWLINE flag bit; do we need this check?

> +
> +             string_list_append(ret, line);
> +     }
> +
> +     return ret;
> +}

Other than that, looks good to me.

Thanks.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to