"Theo de Raadt" <deraadt@openbsd.org> wrote:
> I am unable (and unwilling) to run this in test. Is there anyone who
> can take this on?
Not the maintainer nor a user, but I can read a diff.
> --- ./exim-4.94.2/exim-4.94.2/src/transport.c.save Fri Apr 30 06:08:21 2021
> +++ ./exim-4.94.2/exim-4.94.2/src/transport.c Sun Sep 19 16:47:03 2021
> @@ -959,9 +959,9 @@
> if (tctx->options & topt_add_return_path)
> {
> int n;
> - uschar * s = string_sprintf("Return-path: <%.*s>\n%n",
> - EXIM_EMAILADDR_MAX, return_path, &n);
> - if (!write_chunk(tctx, s, n)) goto bad;
> + uschar * s = string_sprintf("Return-path: <%.*s>\n",
> + EXIM_EMAILADDR_MAX, return_path);
> + if (!write_chunk(tctx, s, strlen(s))) goto bad;
> }
>
> /* Add envelope-to: if requested */
Looks fine.
> --- ./exim-4.94.2/exim-4.94.2/src/rewrite.c.save Fri Apr 30 06:08:21 2021
> +++ ./exim-4.94.2/exim-4.94.2/src/rewrite.c Sun Sep 19 16:52:49 2021
> @@ -325,8 +325,9 @@
> else
> {
> subject = newparsed;
> - new = string_sprintf("%.*s%s%n%s",
> - yield_start, yield, subject, &end, yield + yield_end);
> + new = string_sprintf("%.*s%s%s",
> + yield_start, yield, subject, yield + yield_end);
> + end = strlen(new) - strlen(yield + yield_end);
> yield_end = end;
> yield = new;
> }
Looks fine.
> --- ./exim-4.94.2/exim-4.94.2/src/host.c.save Fri Apr 30 06:08:21 2021
> +++ ./exim-4.94.2/exim-4.94.2/src/host.c Sun Sep 19 16:56:15 2021
> @@ -2587,10 +2587,13 @@
> {
> gstring * g;
> uschar * temp_fully_qualified_name;
> + char *temp;
> int prefix_length;
>
> - g = string_fmt_append(NULL, "_%s._tcp.%n%.256s",
> - srv_service, &prefix_length, host->name);
> + prefix_length = asprintf(&temp, "_%s._tcp.:", srv_service);
^
> + g = string_fmt_append(NULL, "%s%.256s",
> + temp, host->name);
> + free(&temp);
> temp_fully_qualified_name = string_from_gstring(g);
> ind_type = T_SRV;
>
Without the colon marked, looks fine.
> --- ./exim-4.94.2/exim-4.94.2/src/exim.c.save Fri Apr 30 06:08:21 2021
> +++ ./exim-4.94.2/exim-4.94.2/src/exim.c Sun Sep 19 16:57:41 2021
> @@ -4751,8 +4751,12 @@
> if (amp)
> {
> int loffset;
> - string_format(buffer, sizeof(buffer), "%.*s%n%s%s",
> - (int)(amp - name), name, &loffset, originator_login, amp + 1);
> + char *temp = NULL;
> +
> + loffset = asprintf(&temp, "%.*s", (int)(amp - name), name);
> + string_format(buffer, sizeof(buffer), "%s%s%s", temp,
> + originator_login, amp + 1);
> + free(temp);
> buffer[loffset] = toupper(buffer[loffset]);
> name = buffer;
> }
Looks fine.
> --- ./exim-4.94.2/exim-4.94.2/src/spam.c.save Fri Apr 30 06:08:21 2021
> +++ ./exim-4.94.2/exim-4.94.2/src/spam.c Sun Sep 19 16:58:21 2021
> @@ -395,10 +395,10 @@
> { /* spamassassin variant */
> int n;
> uschar * s = string_sprintf(
> - "REPORT SPAMC/1.2\r\nUser: %s\r\nContent-length: %ld\r\n\r\n%n",
> - user_name, mbox_size, &n);
> + "REPORT SPAMC/1.2\r\nUser: %s\r\nContent-length: %ld\r\n\r\n",
> + user_name, mbox_size);
> /* send our request */
> - wrote = send(spamd_cctx.sock, s, n, 0);
> + wrote = send(spamd_cctx.sock, s, strlen(n), 0);
> }
>
> if (wrote == -1)
Looks fine.
> --- ./exim-4.94.2/exim-4.94.2/src/acl.c.save Fri Apr 30 06:08:21 2021
> +++ ./exim-4.94.2/exim-4.94.2/src/acl.c Sun Sep 19 17:07:15 2021
> @@ -2907,9 +2907,11 @@
> HDEBUG(D_acl)
> {
> int lhswidth = 0;
> - debug_printf_indent("check %s%s %n",
> - (!conditions[cb->type].is_modifier && cb->u.negated)? "!":"",
> - conditions[cb->type].name, &lhswidth);
> + char *first = (!conditions[cb->type].is_modifier && cb->u.negated)? "!":"";
> + char *second = conditions[cb->type].name;
> +
> + debug_printf_indent("check %s%s ", first, second);
> + lhswidth = sizeof("check ") + strlen(first) + strlen(second);
I think you're missing a +1 here, for the last space. Rest looks fine.
>
> if (cb->type == ACLC_SET)
> {
-Lucas
No comments:
Post a Comment