|
| 1 | +From 47299a3348e9aab69833c11d36cac525c3140fc9 Mon Sep 17 00:00:00 2001 |
| 2 | +From: AllSpark < [email protected]> |
| 3 | +Date: Thu, 9 Oct 2025 14:34:25 +0000 |
| 4 | +Subject: [PATCH] Backport: disallow NUL in urldecode and avoid fatal on large |
| 5 | + input; sync OpenBSD ID |
| 6 | + |
| 7 | +Signed-off-by: Azure Linux Security Servicing Account < [email protected]> |
| 8 | +Upstream-reference: AI Backport of https://github.com/openssh/openssh-portable/commit/43b3bff47bb029f2299bacb6a36057981b39fdb0.patch |
| 9 | +--- |
| 10 | + misc.c | 10 +++++++--- |
| 11 | + 1 file changed, 7 insertions(+), 3 deletions(-) |
| 12 | + |
| 13 | +diff --git a/misc.c b/misc.c |
| 14 | +index b8933e9..246bb66 100644 |
| 15 | +--- a/misc.c |
| 16 | ++++ b/misc.c |
| 17 | +@@ -1,4 +1,4 @@ |
| 18 | +-/* $OpenBSD: misc.c,v 1.174 2022/02/11 00:43:56 dtucker Exp $ */ |
| 19 | ++/* $OpenBSD: misc.c,v 1.205 2025/09/04 00:30:06 djm Exp $ */ |
| 20 | + /* |
| 21 | + * Copyright (c) 2000 Markus Friedl. All rights reserved. |
| 22 | + * Copyright (c) 2005-2020 Damien Miller. All rights reserved. |
| 23 | +@@ -930,17 +930,21 @@ urldecode(const char *src) |
| 24 | + { |
| 25 | + char *ret, *dst; |
| 26 | + int ch; |
| 27 | ++ size_t srclen; |
| 28 | + |
| 29 | +- ret = xmalloc(strlen(src) + 1); |
| 30 | ++ if ((srclen = strlen(src)) >= SIZE_MAX) |
| 31 | ++ return NULL; |
| 32 | ++ ret = xmalloc(srclen + 1); |
| 33 | + for (dst = ret; *src != '\0'; src++) { |
| 34 | + switch (*src) { |
| 35 | + case '+': |
| 36 | + *dst++ = ' '; |
| 37 | + break; |
| 38 | + case '%': |
| 39 | ++ /* note: don't allow \0 characters */ |
| 40 | + if (!isxdigit((unsigned char)src[1]) || |
| 41 | + !isxdigit((unsigned char)src[2]) || |
| 42 | +- (ch = hexchar(src + 1)) == -1) { |
| 43 | ++ (ch = hexchar(src + 1)) == -1 || ch == 0) { |
| 44 | + free(ret); |
| 45 | + return NULL; |
| 46 | + } |
| 47 | +-- |
| 48 | +2.45.4 |
| 49 | + |
0 commit comments