revert(3p/git): Revert merge of git upstream at v2.26.2

This causes cgit to serve error pages, which is undesirable.

This reverts commit 5229c9b232, reversing
changes made to f2b211131f.
This commit is contained in:
Vincent Ambo 2020-05-26 00:06:52 +01:00
parent 6f8fbf4aa4
commit 93ba78d6f4
1006 changed files with 60537 additions and 148724 deletions

View file

@ -19,7 +19,8 @@ static void cleanup_space(struct strbuf *sb)
static void get_sane_name(struct strbuf *out, struct strbuf *name, struct strbuf *email)
{
struct strbuf *src = name;
if (name->len < 3 || 60 < name->len || strpbrk(name->buf, "@<>"))
if (name->len < 3 || 60 < name->len || strchr(name->buf, '@') ||
strchr(name->buf, '<') || strchr(name->buf, '>'))
src = email;
else if (name == out)
return;
@ -253,7 +254,7 @@ static void handle_content_type(struct mailinfo *mi, struct strbuf *line)
mi->delsp = has_attr_value(line->buf, "delsp=", "yes");
if (slurp_attr(line->buf, "boundary=", boundary)) {
strbuf_insertstr(boundary, 0, "--");
strbuf_insert(boundary, 0, "--", 2);
if (++mi->content_top >= &mi->content[MAX_BOUNDARIES]) {
error("Too many boundaries to handle");
mi->input_error = -1;
@ -345,17 +346,11 @@ static const char *header[MAX_HDR_PARSED] = {
"From","Subject","Date",
};
static inline int skip_header(const struct strbuf *line, const char *hdr,
const char **outval)
static inline int cmp_header(const struct strbuf *line, const char *hdr)
{
const char *val;
if (!skip_iprefix(line->buf, hdr, &val) ||
*val++ != ':')
return 0;
while (isspace(*val))
val++;
*outval = val;
return 1;
int len = strlen(hdr);
return !strncasecmp(line->buf, hdr, len) && line->len > len &&
line->buf[len] == ':' && isspace(line->buf[len + 1]);
}
static int is_format_patch_separator(const char *line, int len)
@ -548,36 +543,22 @@ release_return:
mi->input_error = -1;
}
/*
* Returns true if "line" contains a header matching "hdr", in which case "val"
* will contain the value of the header with any RFC2047 B and Q encoding
* unwrapped, and optionally normalize the meta information to utf8.
*/
static int parse_header(const struct strbuf *line,
const char *hdr,
struct mailinfo *mi,
struct strbuf *val)
{
const char *val_str;
if (!skip_header(line, hdr, &val_str))
return 0;
strbuf_addstr(val, val_str);
decode_header(mi, val);
return 1;
}
static int check_header(struct mailinfo *mi,
const struct strbuf *line,
struct strbuf *hdr_data[], int overwrite)
{
int i, ret = 0;
int i, ret = 0, len;
struct strbuf sb = STRBUF_INIT;
/* search for the interesting parts */
for (i = 0; header[i]; i++) {
if ((!hdr_data[i] || overwrite) &&
parse_header(line, header[i], mi, &sb)) {
int len = strlen(header[i]);
if ((!hdr_data[i] || overwrite) && cmp_header(line, header[i])) {
/* Unwrap inline B and Q encoding, and optionally
* normalize the meta information to utf8.
*/
strbuf_add(&sb, line->buf + len + 2, line->len - len - 2);
decode_header(mi, &sb);
handle_header(&hdr_data[i], &sb);
ret = 1;
goto check_header_out;
@ -585,17 +566,27 @@ static int check_header(struct mailinfo *mi,
}
/* Content stuff */
if (parse_header(line, "Content-Type", mi, &sb)) {
if (cmp_header(line, "Content-Type")) {
len = strlen("Content-Type: ");
strbuf_add(&sb, line->buf + len, line->len - len);
decode_header(mi, &sb);
strbuf_insert(&sb, 0, "Content-Type: ", len);
handle_content_type(mi, &sb);
ret = 1;
goto check_header_out;
}
if (parse_header(line, "Content-Transfer-Encoding", mi, &sb)) {
if (cmp_header(line, "Content-Transfer-Encoding")) {
len = strlen("Content-Transfer-Encoding: ");
strbuf_add(&sb, line->buf + len, line->len - len);
decode_header(mi, &sb);
handle_content_transfer_encoding(mi, &sb);
ret = 1;
goto check_header_out;
}
if (parse_header(line, "Message-Id", mi, &sb)) {
if (cmp_header(line, "Message-Id")) {
len = strlen("Message-Id: ");
strbuf_add(&sb, line->buf + len, line->len - len);
decode_header(mi, &sb);
if (mi->add_message_id)
mi->message_id = strbuf_detach(&sb, NULL);
ret = 1;
@ -616,9 +607,8 @@ static int is_inbody_header(const struct mailinfo *mi,
const struct strbuf *line)
{
int i;
const char *val;
for (i = 0; header[i]; i++)
if (!mi->s_hdr_data[i] && skip_header(line, header[i], &val))
if (!mi->s_hdr_data[i] && cmp_header(line, header[i]))
return 1;
return 0;
}