[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v19 05/33] libtasn1: replace strcat() with _asn1_str_cat()
From: |
Gary Lin |
Subject: |
[PATCH v19 05/33] libtasn1: replace strcat() with _asn1_str_cat() |
Date: |
Fri, 6 Sep 2024 17:10:57 +0800 |
strcat() is not available in GRUB. This commit replaces strcat() and
_asn1_strcat() with the bounds-checking _asn1_str_cat().
Signed-off-by: Daniel Axtens <dja@axtens.net>
Signed-off-by: Gary Lin <glin@suse.com>
---
...n1-replace-strcat-with-_asn1_str_cat.patch | 70 +++++++++++++++++++
1 file changed, 70 insertions(+)
create mode 100644
grub-core/lib/libtasn1-patches/0003-libtasn1-replace-strcat-with-_asn1_str_cat.patch
diff --git
a/grub-core/lib/libtasn1-patches/0003-libtasn1-replace-strcat-with-_asn1_str_cat.patch
b/grub-core/lib/libtasn1-patches/0003-libtasn1-replace-strcat-with-_asn1_str_cat.patch
new file mode 100644
index 000000000..19d86a399
--- /dev/null
+++
b/grub-core/lib/libtasn1-patches/0003-libtasn1-replace-strcat-with-_asn1_str_cat.patch
@@ -0,0 +1,70 @@
+From 8aa07d427966fbb560871a0a87e0af876920002c Mon Sep 17 00:00:00 2001
+From: Gary Lin <glin@suse.com>
+Date: Tue, 20 Aug 2024 16:26:45 +0800
+Subject: [PATCH 03/12] libtasn1: replace strcat() with _asn1_str_cat()
+
+strcat() is not available in GRUB. This commit replaces strcat() and
+_asn1_strcat() with the bounds-checking _asn1_str_cat().
+
+Signed-off-by: Daniel Axtens <dja@axtens.net>
+Signed-off-by: Gary Lin <glin@suse.com>
+---
+ grub-core/lib/libtasn1-grub/lib/decoding.c | 8 ++++----
+ grub-core/lib/libtasn1-grub/lib/element.c | 2 +-
+ grub-core/lib/libtasn1-grub/lib/int.h | 1 -
+ 3 files changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/grub-core/lib/libtasn1-grub/lib/decoding.c
b/grub-core/lib/libtasn1-grub/lib/decoding.c
+index bf9cb13ac..51859fe36 100644
+--- a/grub-core/lib/libtasn1-grub/lib/decoding.c
++++ b/grub-core/lib/libtasn1-grub/lib/decoding.c
+@@ -2016,8 +2016,8 @@ asn1_expand_octet_string (asn1_node_const definitions,
asn1_node * element,
+ (p2->type & CONST_ASSIGN))
+ {
+ strcpy (name, definitions->name);
+- strcat (name, ".");
+- strcat (name, p2->name);
++ _asn1_str_cat (name, sizeof (name), ".");
++ _asn1_str_cat (name, sizeof (name), p2->name);
+
+ len = sizeof (value);
+ result = asn1_read_value (definitions, name, value, &len);
+@@ -2034,8 +2034,8 @@ asn1_expand_octet_string (asn1_node_const definitions,
asn1_node * element,
+ if (p2)
+ {
+ strcpy (name, definitions->name);
+- strcat (name, ".");
+- strcat (name, p2->name);
++ _asn1_str_cat (name, sizeof (name), ".");
++ _asn1_str_cat (name, sizeof (name), p2->name);
+
+ result = asn1_create_element (definitions, name, &aux);
+ if (result == ASN1_SUCCESS)
+diff --git a/grub-core/lib/libtasn1-grub/lib/element.c
b/grub-core/lib/libtasn1-grub/lib/element.c
+index bc4c3c8d7..8694fecb9 100644
+--- a/grub-core/lib/libtasn1-grub/lib/element.c
++++ b/grub-core/lib/libtasn1-grub/lib/element.c
+@@ -688,7 +688,7 @@ asn1_write_value (asn1_node node_root, const char *name,
+ return ASN1_MEM_ERROR; \
+ } else { \
+ /* this strcat is checked */ \
+- if (ptr) _asn1_strcat (ptr, data); \
++ if (ptr) _asn1_str_cat ((char *)ptr, ptr_size, (const char
*)data); \
+ }
+
+ /**
+diff --git a/grub-core/lib/libtasn1-grub/lib/int.h
b/grub-core/lib/libtasn1-grub/lib/int.h
+index d94d51c8c..cadd80df6 100644
+--- a/grub-core/lib/libtasn1-grub/lib/int.h
++++ b/grub-core/lib/libtasn1-grub/lib/int.h
+@@ -115,7 +115,6 @@ extern const tag_and_class_st _asn1_tags[];
+ # define _asn1_strtoul(n,e,b) strtoul((const char *) n, e, b)
+ # define _asn1_strcmp(a,b) strcmp((const char *)a, (const char *)b)
+ # define _asn1_strcpy(a,b) strcpy((char *)a, (const char *)b)
+-# define _asn1_strcat(a,b) strcat((char *)a, (const char *)b)
+
+ # if SIZEOF_UNSIGNED_LONG_INT == 8
+ # define _asn1_strtou64(n,e,b) strtoul((const char *) n, e, b)
+--
+2.35.3
+
--
2.35.3
- [PATCH v19 00/33] Automatic Disk Unlock with TPM2, Gary Lin, 2024/09/06
- [PATCH v19 01/33] posix_wrap: tweaks in preparation for libtasn1, Gary Lin, 2024/09/06
- [PATCH v19 03/33] libtasn1: disable code not needed in grub, Gary Lin, 2024/09/06
- [PATCH v19 04/33] libtasn1: replace strcat() with strcpy() in _asn1_str_cat(), Gary Lin, 2024/09/06
- [PATCH v19 05/33] libtasn1: replace strcat() with _asn1_str_cat(),
Gary Lin <=
- [PATCH v19 02/33] libtasn1: import libtasn1-4.19.0, Gary Lin, 2024/09/06
- [PATCH v19 07/33] libtasn1: Use grub_divmod64() for division, Gary Lin, 2024/09/06
- [PATCH v19 06/33] libtasn1: adjust the header paths in libtasn1.h, Gary Lin, 2024/09/06
- [PATCH v19 08/33] libtasn1: fix the potential buffer overrun, Gary Lin, 2024/09/06
- [PATCH v19 09/33] asn1_test: include asn1_test.h only, Gary Lin, 2024/09/06
- [PATCH v19 10/33] asn1_test: rename the main functions to the test names, Gary Lin, 2024/09/06
- [PATCH v19 11/33] asn1_test: remove 'verbose' and the unnecessary printf(), Gary Lin, 2024/09/06
- [PATCH v19 12/33] asn1_test: print the error messages with grub_printf(), Gary Lin, 2024/09/06
- [PATCH v19 13/33] asn1_test: return either 0 or 1 to reflect the results, Gary Lin, 2024/09/06
- [PATCH v19 14/33] asn1_test: use the grub-specific functions and types, Gary Lin, 2024/09/06