grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Berger <stefanb@linux.ibm.com>
To: The development of GNU GRUB <grub-devel@gnu.org>
Cc: Gary Lin <glin@suse.com>,
	Hernan Gatta <hegatta@linux.microsoft.com>,
	Daniel Axtens <dja@axtens.net>,
	Daniel Kiper <daniel.kiper@oracle.com>,
	shkhisti@microsoft.com, jaskaran.khurana@microsoft.com,
	christopher.co@microsoft.com, daniel.mihai@microsoft.com,
	jaredz@redhat.com, development@efficientek.com,
	jejb@linux.ibm.com, mchang@suse.com, patrick.colp@oracle.com,
	Vladimir Serbinenko <phcoder@gmail.com>
Subject: Re: [PATCH v13 04/20] libtasn1: changes for grub compatibility
Date: Tue, 30 Apr 2024 09:14:37 -0400	[thread overview]
Message-ID: <068e4426-0e14-45c6-b0ff-2ff41ab14ea1@linux.ibm.com> (raw)
In-Reply-To: <20240425080206.23902-5-glin@suse.com>



On 4/25/24 04:01, Gary Lin via Grub-devel wrote:
> From: Daniel Axtens <dja@axtens.net>
> 
> Do a few things to make libtasn1 compile as part of grub:
> 
>   - remove _asn1_strcat and replace strcat with the bound-checked
>     _asn1_str_cat except the one inside _asn1_str_cat. That strcat is
>     replaced with strcpy.
> 
>   - adjust header paths in libtasn1.h
> 
>   - adjust header paths to "grub/libtasn1.h".
> 
>   - replace a 64 bit division with a call to grub_divmod64, preventing
>     creation of __udivdi3 calls on 32 bit platforms.
> 
> Cc: Vladimir Serbinenko <phcoder@gmail.com>
> Signed-off-by: Daniel Axtens <dja@axtens.net>
> Signed-off-by: Gary Lin <glin@suse.com>

Reviewed-by: Stefan Berger <stefanb@linux.ibm.com>

> ---
>   grub-core/lib/libtasn1/lib/decoding.c   | 8 ++++----
>   grub-core/lib/libtasn1/lib/element.c    | 2 +-
>   grub-core/lib/libtasn1/lib/gstr.c       | 2 +-
>   grub-core/lib/libtasn1/lib/int.h        | 3 +--
>   grub-core/lib/libtasn1/lib/parser_aux.c | 2 +-
>   include/grub/libtasn1.h                 | 5 ++---
>   6 files changed, 10 insertions(+), 12 deletions(-)
> 
> diff --git a/grub-core/lib/libtasn1/lib/decoding.c b/grub-core/lib/libtasn1/lib/decoding.c
> index bf9cb13ac..51859fe36 100644
> --- a/grub-core/lib/libtasn1/lib/decoding.c
> +++ b/grub-core/lib/libtasn1/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/lib/element.c b/grub-core/lib/libtasn1/lib/element.c
> index bc4c3c8d7..8694fecb9 100644
> --- a/grub-core/lib/libtasn1/lib/element.c
> +++ b/grub-core/lib/libtasn1/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/lib/gstr.c b/grub-core/lib/libtasn1/lib/gstr.c
> index eef419554..a9c16f5d3 100644
> --- a/grub-core/lib/libtasn1/lib/gstr.c
> +++ b/grub-core/lib/libtasn1/lib/gstr.c
> @@ -36,7 +36,7 @@ _asn1_str_cat (char *dest, size_t dest_tot_size, const char *src)
>   
>     if (dest_tot_size - dest_size > str_size)
>       {
> -      strcat (dest, src);
> +      strcpy (dest + dest_size, src);
>       }
>     else
>       {
> diff --git a/grub-core/lib/libtasn1/lib/int.h b/grub-core/lib/libtasn1/lib/int.h
> index d94d51c8c..7409c7655 100644
> --- a/grub-core/lib/libtasn1/lib/int.h
> +++ b/grub-core/lib/libtasn1/lib/int.h
> @@ -35,7 +35,7 @@
>   #  include <sys/types.h>
>   # endif
>   
> -# include <libtasn1.h>
> +# include "grub/libtasn1.h"
>   
>   # define ASN1_SMALL_VALUE_SIZE 16
>   
> @@ -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)
> diff --git a/grub-core/lib/libtasn1/lib/parser_aux.c b/grub-core/lib/libtasn1/lib/parser_aux.c
> index c05bd2339..e4e4c0556 100644
> --- a/grub-core/lib/libtasn1/lib/parser_aux.c
> +++ b/grub-core/lib/libtasn1/lib/parser_aux.c
> @@ -632,7 +632,7 @@ _asn1_ltostr (int64_t v, char str[LTOSTR_MAX_SIZE])
>     count = 0;
>     do
>       {
> -      d = val / 10;
> +      d = grub_divmod64(val, 10, NULL);
>         r = val - d * 10;
>         temp[start + count] = '0' + (char) r;
>         count++;
> diff --git a/include/grub/libtasn1.h b/include/grub/libtasn1.h
> index 058ab27b0..7d64b6ab7 100644
> --- a/include/grub/libtasn1.h
> +++ b/include/grub/libtasn1.h
> @@ -54,9 +54,8 @@
>   #  define __LIBTASN1_PURE__
>   # endif
>   
> -# include <sys/types.h>
> -# include <time.h>
> -# include <stdio.h>		/* for FILE* */
> +# include <grub/types.h>
> +# include <grub/time.h>
>   
>   # ifdef __cplusplus
>   extern "C"

_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

  reply	other threads:[~2024-04-30 13:15 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-25  8:01 [PATCH v13 00/20] Automatic Disk Unlock with TPM2 Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 01/20] posix_wrap: tweaks in preparation for libtasn1 Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 02/20] libtasn1: import libtasn1-4.19.0 Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 03/20] libtasn1: disable code not needed in grub Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 04/20] libtasn1: changes for grub compatibility Gary Lin via Grub-devel
2024-04-30 13:14   ` Stefan Berger [this message]
2024-04-25  8:01 ` [PATCH v13 05/20] libtasn1: fix the potential buffer overrun Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 06/20] libtasn1: compile into asn1 module Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 07/20] asn1_test: test module for libtasn1 Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 08/20] libtasn1: Add the documentation Gary Lin via Grub-devel
2024-04-27  8:27   ` Glenn Washburn
2024-04-29  6:21     ` Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 09/20] key_protector: Add key protectors framework Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 10/20] tpm2: Add TPM Software Stack (TSS) Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 11/20] key_protector: Add TPM2 Key Protector Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 12/20] cryptodisk: Support key protectors Gary Lin via Grub-devel
2024-04-25  8:01 ` [PATCH v13 13/20] util/grub-protect: Add new tool Gary Lin via Grub-devel
2024-04-25  8:02 ` [PATCH v13 14/20] tpm2: Support authorized policy Gary Lin via Grub-devel
2024-04-25  8:02 ` [PATCH v13 15/20] tpm2: Implement NV index Gary Lin via Grub-devel
2024-04-25  8:02 ` [PATCH v13 16/20] cryptodisk: Fallback to passphrase Gary Lin via Grub-devel
2024-04-25  8:02 ` [PATCH v13 17/20] cryptodisk: wipe out the cached keys from protectors Gary Lin via Grub-devel
2024-04-25  8:02 ` [PATCH v13 18/20] diskfilter: look up cryptodisk devices first Gary Lin via Grub-devel
2024-04-25  8:02 ` [PATCH v13 19/20] tpm2: Enable tpm2 module for grub-emu Gary Lin via Grub-devel
2024-04-25  8:02 ` [PATCH v13 20/20] tests: Add tpm2_test Gary Lin via Grub-devel
2024-04-26 22:18   ` Glenn Washburn
2024-04-29  8:10     ` Gary Lin via Grub-devel
2024-04-30  8:09       ` Gary Lin via Grub-devel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=068e4426-0e14-45c6-b0ff-2ff41ab14ea1@linux.ibm.com \
    --to=stefanb@linux.ibm.com \
    --cc=christopher.co@microsoft.com \
    --cc=daniel.kiper@oracle.com \
    --cc=daniel.mihai@microsoft.com \
    --cc=development@efficientek.com \
    --cc=dja@axtens.net \
    --cc=glin@suse.com \
    --cc=grub-devel@gnu.org \
    --cc=hegatta@linux.microsoft.com \
    --cc=jaredz@redhat.com \
    --cc=jaskaran.khurana@microsoft.com \
    --cc=jejb@linux.ibm.com \
    --cc=mchang@suse.com \
    --cc=patrick.colp@oracle.com \
    --cc=phcoder@gmail.com \
    --cc=shkhisti@microsoft.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).