public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf
@ 2022-06-13 17:35 Philippe Schenker
  2022-06-13 17:35 ` [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length Philippe Schenker
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Philippe Schenker @ 2022-06-13 17:35 UTC (permalink / raw)
  To: u-boot
  Cc: francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Oleksandr Suvorov, Stefan Agner

From: Philippe Schenker <philippe.schenker@toradex.com>

Prevent memory issues that could appear with sprintf. Replace all
sprintf occurences with snprintf.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
---

 board/toradex/common/tdx-common.c | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index 9db4553e0f..2207818447 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -89,11 +89,13 @@ int show_board_info(void)
 		tdx_eth_addr.nic = htonl(tdx_serial << 8);
 		checkboard();
 	} else {
-		sprintf(tdx_serial_str, "%08u", tdx_serial);
-		sprintf(tdx_board_rev_str, "V%1d.%1d%c",
-			tdx_hw_tag.ver_major,
-			tdx_hw_tag.ver_minor,
-			(char)tdx_hw_tag.ver_assembly + 'A');
+		snprintf(tdx_serial_str, sizeof(tdx_serial_str),
+			 "%08u", tdx_serial);
+		snprintf(tdx_board_rev_str, sizeof(tdx_board_rev_str),
+			 "V%1d.%1d%c",
+			 tdx_hw_tag.ver_major,
+			 tdx_hw_tag.ver_minor,
+			 (char)tdx_hw_tag.ver_assembly + 'A');
 
 		env_set("serial#", tdx_serial_str);
 
@@ -109,12 +111,13 @@ int show_board_info(void)
 			tdx_carrier_board_name = (char *)
 				toradex_carrier_boards[tdx_car_hw_tag.prodid];
 
-			sprintf(tdx_car_serial_str, "%08u", tdx_car_serial);
-			sprintf(tdx_car_rev_str, "V%1d.%1d%c",
-				tdx_car_hw_tag.ver_major,
-				tdx_car_hw_tag.ver_minor,
-				(char)tdx_car_hw_tag.ver_assembly +
-				'A');
+			snprintf(tdx_car_serial_str, sizeof(tdx_car_serial_str),
+				 "%08u", tdx_car_serial);
+			snprintf(tdx_car_rev_str, sizeof(tdx_car_rev_str),
+				 "V%1d.%1d%c",
+				 tdx_car_hw_tag.ver_major,
+				 tdx_car_hw_tag.ver_minor,
+				 (char)tdx_car_hw_tag.ver_assembly + 'A');
 
 			env_set("carrier_serial#", tdx_car_serial_str);
 			printf("Carrier: Toradex %s %s, Serial# %s\n",
@@ -170,7 +173,7 @@ int ft_common_board_setup(void *blob, struct bd_info *bd)
 	if (tdx_hw_tag.ver_major) {
 		char prod_id[5];
 
-		sprintf(prod_id, "%04u", tdx_hw_tag.prodid);
+		snprintf(prod_id, sizeof(prod_id), "%04u", tdx_hw_tag.prodid);
 		fdt_setprop(blob, 0, "toradex,product-id", prod_id, 5);
 
 		fdt_setprop(blob, 0, "toradex,board-rev", tdx_board_rev_str,
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length
  2022-06-13 17:35 [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Philippe Schenker
@ 2022-06-13 17:35 ` Philippe Schenker
  2022-06-15 11:59   ` Francesco Dolcini
                     ` (2 more replies)
  2022-06-13 17:35 ` [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version Philippe Schenker
                   ` (3 subsequent siblings)
  4 siblings, 3 replies; 12+ messages in thread
From: Philippe Schenker @ 2022-06-13 17:35 UTC (permalink / raw)
  To: u-boot
  Cc: francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Oleksandr Suvorov, Stefan Agner

From: Philippe Schenker <philippe.schenker@toradex.com>

With those defines the length can be reused and is in one place
extendable.

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
---

 board/toradex/common/tdx-common.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index 2207818447..94e603c14f 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -22,13 +22,17 @@
 
 #define TORADEX_OUI 0x00142dUL
 
+#define SERIAL_STR_LEN 8
+#define MODULE_VER_STR_LEN 4 // V1.1
+#define MODULE_REV_STR_LEN 1 // [A-Z]
+
 #ifdef CONFIG_TDX_CFG_BLOCK
-static char tdx_serial_str[9];
-static char tdx_board_rev_str[6];
+static char tdx_serial_str[SERIAL_STR_LEN + 1];
+static char tdx_board_rev_str[MODULE_VER_STR_LEN + MODULE_REV_STR_LEN + 1];
 
 #ifdef CONFIG_TDX_CFG_BLOCK_EXTRA
-static char tdx_car_serial_str[9];
-static char tdx_car_rev_str[6];
+static char tdx_car_serial_str[SERIAL_STR_LEN + 1];
+static char tdx_car_rev_str[MODULE_VER_STR_LEN + MODULE_REV_STR_LEN + 1];
 static char *tdx_carrier_board_name;
 #endif
 
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version
  2022-06-13 17:35 [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Philippe Schenker
  2022-06-13 17:35 ` [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length Philippe Schenker
@ 2022-06-13 17:35 ` Philippe Schenker
  2022-06-15 11:59   ` Francesco Dolcini
                     ` (2 more replies)
  2022-06-15 11:59 ` [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Francesco Dolcini
                   ` (2 subsequent siblings)
  4 siblings, 3 replies; 12+ messages in thread
From: Philippe Schenker @ 2022-06-13 17:35 UTC (permalink / raw)
  To: u-boot
  Cc: francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Denys Drozdov, Oleksandr Suvorov, Simon Glass, Stefan Agner

From: Philippe Schenker <philippe.schenker@toradex.com>

There are two decimal digits reserved to encode the module version and
revision. This code so far implemented A-Z which used 0-25 of this
range.
This commit extends the range to make use of all 99 numbers. After
capital letters the form with a hashtag and number (e.g. #26) is used.

Examples:

If the assembly version is between zero and 25 the numbering is as follows,
as it also has been before this commit:
0: V0.0A
1: V0.0B
...
25: V0.0Z

New numbering of assembly version:
If the number is between 26 and 99 the new assembly version name is:
26: V0.0#26
27: V0.0#27
...
99: V0.0#99

Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

---

 board/toradex/common/tdx-cfg-block.c | 32 ++++++++++++++++++++++++----
 board/toradex/common/tdx-common.c    | 25 +++++++++++++++++-----
 2 files changed, 48 insertions(+), 9 deletions(-)

diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c
index 9c87289ae9..05f25fe7e6 100644
--- a/board/toradex/common/tdx-cfg-block.c
+++ b/board/toradex/common/tdx-cfg-block.c
@@ -353,6 +353,18 @@ out:
 	return ret;
 }
 
+static int parse_assembly_string(char *string_to_parse, u16 *assembly)
+{
+	if (string_to_parse[3] >= 'A' && string_to_parse[3] <= 'Z')
+		*assembly = string_to_parse[3] - 'A';
+	else if (string_to_parse[3] == '#')
+		*assembly = dectoul(&string_to_parse[4], NULL);
+	else
+		return -EINVAL;
+
+	return 0;
+}
+
 static int get_cfgblock_interactive(void)
 {
 	char message[CONFIG_SYS_CBSIZE];
@@ -360,6 +372,7 @@ static int get_cfgblock_interactive(void)
 	char it = 'n';
 	char wb = 'n';
 	int len = 0;
+	int ret = 0;
 
 	/* Unknown module by default */
 	tdx_hw_tag.prodid = 0;
@@ -531,13 +544,18 @@ static int get_cfgblock_interactive(void)
 	}
 
 	while (len < 4) {
-		sprintf(message, "Enter the module version (e.g. V1.1B): V");
+		sprintf(message, "Enter the module version (e.g. V1.1B or V1.1#26): V");
 		len = cli_readline(message);
 	}
 
 	tdx_hw_tag.ver_major = console_buffer[0] - '0';
 	tdx_hw_tag.ver_minor = console_buffer[2] - '0';
-	tdx_hw_tag.ver_assembly = console_buffer[3] - 'A';
+
+	ret = parse_assembly_string(console_buffer, &tdx_hw_tag.ver_assembly);
+	if (ret) {
+		printf("Parsing module version failed\n");
+		return ret;
+	}
 
 	while (len < 8) {
 		sprintf(message, "Enter module serial number: ");
@@ -740,6 +758,7 @@ static int get_cfgblock_carrier_interactive(void)
 {
 	char message[CONFIG_SYS_CBSIZE];
 	int len;
+	int ret = 0;
 
 	printf("Supported carrier boards:\n");
 	printf("CARRIER BOARD NAME\t\t [ID]\n");
@@ -753,13 +772,18 @@ static int get_cfgblock_carrier_interactive(void)
 	tdx_car_hw_tag.prodid = dectoul(console_buffer, NULL);
 
 	do {
-		sprintf(message, "Enter carrier board version (e.g. V1.1B): V");
+		sprintf(message, "Enter carrier board version (e.g. V1.1B or V1.1#26): V");
 		len = cli_readline(message);
 	} while (len < 4);
 
 	tdx_car_hw_tag.ver_major = console_buffer[0] - '0';
 	tdx_car_hw_tag.ver_minor = console_buffer[2] - '0';
-	tdx_car_hw_tag.ver_assembly = console_buffer[3] - 'A';
+
+	ret = parse_assembly_string(console_buffer, &tdx_car_hw_tag.ver_assembly);
+	if (ret) {
+		printf("Parsing module version failed\n");
+		return ret;
+	}
 
 	while (len < 8) {
 		sprintf(message, "Enter carrier board serial number: ");
diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
index 94e603c14f..5ad5d00a0d 100644
--- a/board/toradex/common/tdx-common.c
+++ b/board/toradex/common/tdx-common.c
@@ -24,7 +24,7 @@
 
 #define SERIAL_STR_LEN 8
 #define MODULE_VER_STR_LEN 4 // V1.1
-#define MODULE_REV_STR_LEN 1 // [A-Z]
+#define MODULE_REV_STR_LEN 3 // [A-Z] or #[26-99]
 
 #ifdef CONFIG_TDX_CFG_BLOCK
 static char tdx_serial_str[SERIAL_STR_LEN + 1];
@@ -83,6 +83,21 @@ void get_board_serial(struct tag_serialnr *serialnr)
 }
 #endif /* CONFIG_SERIAL_TAG */
 
+static const char *get_board_assembly(u16 ver_assembly)
+{
+	static char ver_name[MODULE_REV_STR_LEN + 1];
+
+	if (ver_assembly < 26) {
+		ver_name[0] = (char)ver_assembly + 'A';
+		ver_name[1] = '\0';
+	} else {
+		snprintf(ver_name, sizeof(ver_name),
+			 "#%u", ver_assembly);
+	}
+
+	return ver_name;
+}
+
 int show_board_info(void)
 {
 	unsigned char ethaddr[6];
@@ -96,10 +111,10 @@ int show_board_info(void)
 		snprintf(tdx_serial_str, sizeof(tdx_serial_str),
 			 "%08u", tdx_serial);
 		snprintf(tdx_board_rev_str, sizeof(tdx_board_rev_str),
-			 "V%1d.%1d%c",
+			 "V%1d.%1d%s",
 			 tdx_hw_tag.ver_major,
 			 tdx_hw_tag.ver_minor,
-			 (char)tdx_hw_tag.ver_assembly + 'A');
+			 get_board_assembly(tdx_hw_tag.ver_assembly));
 
 		env_set("serial#", tdx_serial_str);
 
@@ -118,10 +133,10 @@ int show_board_info(void)
 			snprintf(tdx_car_serial_str, sizeof(tdx_car_serial_str),
 				 "%08u", tdx_car_serial);
 			snprintf(tdx_car_rev_str, sizeof(tdx_car_rev_str),
-				 "V%1d.%1d%c",
+				 "V%1d.%1d%s",
 				 tdx_car_hw_tag.ver_major,
 				 tdx_car_hw_tag.ver_minor,
-				 (char)tdx_car_hw_tag.ver_assembly + 'A');
+				 get_board_assembly(tdx_car_hw_tag.ver_assembly));
 
 			env_set("carrier_serial#", tdx_car_serial_str);
 			printf("Carrier: Toradex %s %s, Serial# %s\n",
-- 
2.36.1


^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf
  2022-06-13 17:35 [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Philippe Schenker
  2022-06-13 17:35 ` [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length Philippe Schenker
  2022-06-13 17:35 ` [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version Philippe Schenker
@ 2022-06-15 11:59 ` Francesco Dolcini
  2022-06-30 11:55 ` Marcel Ziswiler
  2022-07-07  1:55 ` Tom Rini
  4 siblings, 0 replies; 12+ messages in thread
From: Francesco Dolcini @ 2022-06-15 11:59 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: u-boot, francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Oleksandr Suvorov, Stefan Agner

On Mon, Jun 13, 2022 at 07:35:21PM +0200, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> Prevent memory issues that could appear with sprintf. Replace all
> sprintf occurences with snprintf.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>



^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length
  2022-06-13 17:35 ` [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length Philippe Schenker
@ 2022-06-15 11:59   ` Francesco Dolcini
  2022-06-30 11:57   ` Marcel Ziswiler
  2022-07-07  1:55   ` Tom Rini
  2 siblings, 0 replies; 12+ messages in thread
From: Francesco Dolcini @ 2022-06-15 11:59 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: u-boot, francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Oleksandr Suvorov, Stefan Agner

On Mon, Jun 13, 2022 at 07:35:22PM +0200, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> With those defines the length can be reused and is in one place
> extendable.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version
  2022-06-13 17:35 ` [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version Philippe Schenker
@ 2022-06-15 11:59   ` Francesco Dolcini
  2022-06-30 12:31   ` Marcel Ziswiler
  2022-07-07  1:55   ` Tom Rini
  2 siblings, 0 replies; 12+ messages in thread
From: Francesco Dolcini @ 2022-06-15 11:59 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: u-boot, francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Denys Drozdov, Oleksandr Suvorov, Simon Glass, Stefan Agner

On Mon, Jun 13, 2022 at 07:35:23PM +0200, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> There are two decimal digits reserved to encode the module version and
> revision. This code so far implemented A-Z which used 0-25 of this
> range.
> This commit extends the range to make use of all 99 numbers. After
> capital letters the form with a hashtag and number (e.g. #26) is used.
> 
> Examples:
> 
> If the assembly version is between zero and 25 the numbering is as follows,
> as it also has been before this commit:
> 0: V0.0A
> 1: V0.0B
> ...
> 25: V0.0Z
> 
> New numbering of assembly version:
> If the number is between 26 and 99 the new assembly version name is:
> 26: V0.0#26
> 27: V0.0#27
> ...
> 99: V0.0#99
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf
  2022-06-13 17:35 [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Philippe Schenker
                   ` (2 preceding siblings ...)
  2022-06-15 11:59 ` [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Francesco Dolcini
@ 2022-06-30 11:55 ` Marcel Ziswiler
  2022-07-07  1:55 ` Tom Rini
  4 siblings, 0 replies; 12+ messages in thread
From: Marcel Ziswiler @ 2022-06-30 11:55 UTC (permalink / raw)
  To: dev@pschenker.ch, u-boot@lists.denx.de
  Cc: Philippe Schenker, stefan.agner@toradex.com, Francesco Dolcini,
	oleksandr.suvorov@toradex.com

On Mon, 2022-06-13 at 19:35 +0200, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> Prevent memory issues that could appear with sprintf. Replace all
> sprintf occurences with snprintf.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

> ---
> 
>  board/toradex/common/tdx-common.c | 27 +++++++++++++++------------
>  1 file changed, 15 insertions(+), 12 deletions(-)
> 
> diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
> index 9db4553e0f..2207818447 100644
> --- a/board/toradex/common/tdx-common.c
> +++ b/board/toradex/common/tdx-common.c
> @@ -89,11 +89,13 @@ int show_board_info(void)
>                 tdx_eth_addr.nic = htonl(tdx_serial << 8);
>                 checkboard();
>         } else {
> -               sprintf(tdx_serial_str, "%08u", tdx_serial);
> -               sprintf(tdx_board_rev_str, "V%1d.%1d%c",
> -                       tdx_hw_tag.ver_major,
> -                       tdx_hw_tag.ver_minor,
> -                       (char)tdx_hw_tag.ver_assembly + 'A');
> +               snprintf(tdx_serial_str, sizeof(tdx_serial_str),
> +                        "%08u", tdx_serial);
> +               snprintf(tdx_board_rev_str, sizeof(tdx_board_rev_str),
> +                        "V%1d.%1d%c",
> +                        tdx_hw_tag.ver_major,
> +                        tdx_hw_tag.ver_minor,
> +                        (char)tdx_hw_tag.ver_assembly + 'A');
>  
>                 env_set("serial#", tdx_serial_str);
>  
> @@ -109,12 +111,13 @@ int show_board_info(void)
>                         tdx_carrier_board_name = (char *)
>                                 toradex_carrier_boards[tdx_car_hw_tag.prodid];
>  
> -                       sprintf(tdx_car_serial_str, "%08u", tdx_car_serial);
> -                       sprintf(tdx_car_rev_str, "V%1d.%1d%c",
> -                               tdx_car_hw_tag.ver_major,
> -                               tdx_car_hw_tag.ver_minor,
> -                               (char)tdx_car_hw_tag.ver_assembly +
> -                               'A');
> +                       snprintf(tdx_car_serial_str, sizeof(tdx_car_serial_str),
> +                                "%08u", tdx_car_serial);
> +                       snprintf(tdx_car_rev_str, sizeof(tdx_car_rev_str),
> +                                "V%1d.%1d%c",
> +                                tdx_car_hw_tag.ver_major,
> +                                tdx_car_hw_tag.ver_minor,
> +                                (char)tdx_car_hw_tag.ver_assembly + 'A');
>  
>                         env_set("carrier_serial#", tdx_car_serial_str);
>                         printf("Carrier: Toradex %s %s, Serial# %s\n",
> @@ -170,7 +173,7 @@ int ft_common_board_setup(void *blob, struct bd_info *bd)
>         if (tdx_hw_tag.ver_major) {
>                 char prod_id[5];
>  
> -               sprintf(prod_id, "%04u", tdx_hw_tag.prodid);
> +               snprintf(prod_id, sizeof(prod_id), "%04u", tdx_hw_tag.prodid);
>                 fdt_setprop(blob, 0, "toradex,product-id", prod_id, 5);
>  
>                 fdt_setprop(blob, 0, "toradex,board-rev", tdx_board_rev_str,

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length
  2022-06-13 17:35 ` [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length Philippe Schenker
  2022-06-15 11:59   ` Francesco Dolcini
@ 2022-06-30 11:57   ` Marcel Ziswiler
  2022-07-07  1:55   ` Tom Rini
  2 siblings, 0 replies; 12+ messages in thread
From: Marcel Ziswiler @ 2022-06-30 11:57 UTC (permalink / raw)
  To: dev@pschenker.ch, u-boot@lists.denx.de
  Cc: Philippe Schenker, stefan.agner@toradex.com, Francesco Dolcini,
	oleksandr.suvorov@toradex.com

On Mon, 2022-06-13 at 19:35 +0200, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> With those defines the length can be reused and is in one place
> extendable.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

> ---
> 
>  board/toradex/common/tdx-common.c | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
> index 2207818447..94e603c14f 100644
> --- a/board/toradex/common/tdx-common.c
> +++ b/board/toradex/common/tdx-common.c
> @@ -22,13 +22,17 @@
>  
>  #define TORADEX_OUI 0x00142dUL
>  
> +#define SERIAL_STR_LEN 8
> +#define MODULE_VER_STR_LEN 4 // V1.1
> +#define MODULE_REV_STR_LEN 1 // [A-Z]
> +
>  #ifdef CONFIG_TDX_CFG_BLOCK
> -static char tdx_serial_str[9];
> -static char tdx_board_rev_str[6];
> +static char tdx_serial_str[SERIAL_STR_LEN + 1];
> +static char tdx_board_rev_str[MODULE_VER_STR_LEN + MODULE_REV_STR_LEN + 1];
>  
>  #ifdef CONFIG_TDX_CFG_BLOCK_EXTRA
> -static char tdx_car_serial_str[9];
> -static char tdx_car_rev_str[6];
> +static char tdx_car_serial_str[SERIAL_STR_LEN + 1];
> +static char tdx_car_rev_str[MODULE_VER_STR_LEN + MODULE_REV_STR_LEN + 1];
>  static char *tdx_carrier_board_name;
>  #endif

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version
  2022-06-13 17:35 ` [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version Philippe Schenker
  2022-06-15 11:59   ` Francesco Dolcini
@ 2022-06-30 12:31   ` Marcel Ziswiler
  2022-07-07  1:55   ` Tom Rini
  2 siblings, 0 replies; 12+ messages in thread
From: Marcel Ziswiler @ 2022-06-30 12:31 UTC (permalink / raw)
  To: dev@pschenker.ch, u-boot@lists.denx.de
  Cc: Philippe Schenker, sjg@chromium.org, stefan.agner@toradex.com,
	Francesco Dolcini, oleksandr.suvorov@toradex.com, Denys Drozdov

On Mon, 2022-06-13 at 19:35 +0200, Philippe Schenker wrote:
> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> There are two decimal digits reserved to encode the module version and
> revision. This code so far implemented A-Z which used 0-25 of this
> range.
> This commit extends the range to make use of all 99 numbers. After
> capital letters the form with a hashtag and number (e.g. #26) is used.
> 
> Examples:
> 
> If the assembly version is between zero and 25 the numbering is as follows,
> as it also has been before this commit:
> 0: V0.0A
> 1: V0.0B
> ...
> 25: V0.0Z
> 
> New numbering of assembly version:
> If the number is between 26 and 99 the new assembly version name is:
> 26: V0.0#26
> 27: V0.0#27
> ...
> 99: V0.0#99
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>

Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

> ---
> 
>  board/toradex/common/tdx-cfg-block.c | 32 ++++++++++++++++++++++++----
>  board/toradex/common/tdx-common.c    | 25 +++++++++++++++++-----
>  2 files changed, 48 insertions(+), 9 deletions(-)
> 
> diff --git a/board/toradex/common/tdx-cfg-block.c b/board/toradex/common/tdx-cfg-block.c
> index 9c87289ae9..05f25fe7e6 100644
> --- a/board/toradex/common/tdx-cfg-block.c
> +++ b/board/toradex/common/tdx-cfg-block.c
> @@ -353,6 +353,18 @@ out:
>         return ret;
>  }
>  
> +static int parse_assembly_string(char *string_to_parse, u16 *assembly)
> +{
> +       if (string_to_parse[3] >= 'A' && string_to_parse[3] <= 'Z')
> +               *assembly = string_to_parse[3] - 'A';
> +       else if (string_to_parse[3] == '#')
> +               *assembly = dectoul(&string_to_parse[4], NULL);
> +       else
> +               return -EINVAL;
> +
> +       return 0;
> +}
> +
>  static int get_cfgblock_interactive(void)
>  {
>         char message[CONFIG_SYS_CBSIZE];
> @@ -360,6 +372,7 @@ static int get_cfgblock_interactive(void)
>         char it = 'n';
>         char wb = 'n';
>         int len = 0;
> +       int ret = 0;
>  
>         /* Unknown module by default */
>         tdx_hw_tag.prodid = 0;
> @@ -531,13 +544,18 @@ static int get_cfgblock_interactive(void)
>         }
>  
>         while (len < 4) {
> -               sprintf(message, "Enter the module version (e.g. V1.1B): V");
> +               sprintf(message, "Enter the module version (e.g. V1.1B or V1.1#26): V");
>                 len = cli_readline(message);
>         }
>  
>         tdx_hw_tag.ver_major = console_buffer[0] - '0';
>         tdx_hw_tag.ver_minor = console_buffer[2] - '0';
> -       tdx_hw_tag.ver_assembly = console_buffer[3] - 'A';
> +
> +       ret = parse_assembly_string(console_buffer, &tdx_hw_tag.ver_assembly);
> +       if (ret) {
> +               printf("Parsing module version failed\n");
> +               return ret;
> +       }
>  
>         while (len < 8) {
>                 sprintf(message, "Enter module serial number: ");
> @@ -740,6 +758,7 @@ static int get_cfgblock_carrier_interactive(void)
>  {
>         char message[CONFIG_SYS_CBSIZE];
>         int len;
> +       int ret = 0;
>  
>         printf("Supported carrier boards:\n");
>         printf("CARRIER BOARD NAME\t\t [ID]\n");
> @@ -753,13 +772,18 @@ static int get_cfgblock_carrier_interactive(void)
>         tdx_car_hw_tag.prodid = dectoul(console_buffer, NULL);
>  
>         do {
> -               sprintf(message, "Enter carrier board version (e.g. V1.1B): V");
> +               sprintf(message, "Enter carrier board version (e.g. V1.1B or V1.1#26): V");
>                 len = cli_readline(message);
>         } while (len < 4);
>  
>         tdx_car_hw_tag.ver_major = console_buffer[0] - '0';
>         tdx_car_hw_tag.ver_minor = console_buffer[2] - '0';
> -       tdx_car_hw_tag.ver_assembly = console_buffer[3] - 'A';
> +
> +       ret = parse_assembly_string(console_buffer, &tdx_car_hw_tag.ver_assembly);
> +       if (ret) {
> +               printf("Parsing module version failed\n");
> +               return ret;
> +       }
>  
>         while (len < 8) {
>                 sprintf(message, "Enter carrier board serial number: ");
> diff --git a/board/toradex/common/tdx-common.c b/board/toradex/common/tdx-common.c
> index 94e603c14f..5ad5d00a0d 100644
> --- a/board/toradex/common/tdx-common.c
> +++ b/board/toradex/common/tdx-common.c
> @@ -24,7 +24,7 @@
>  
>  #define SERIAL_STR_LEN 8
>  #define MODULE_VER_STR_LEN 4 // V1.1
> -#define MODULE_REV_STR_LEN 1 // [A-Z]
> +#define MODULE_REV_STR_LEN 3 // [A-Z] or #[26-99]
>  
>  #ifdef CONFIG_TDX_CFG_BLOCK
>  static char tdx_serial_str[SERIAL_STR_LEN + 1];
> @@ -83,6 +83,21 @@ void get_board_serial(struct tag_serialnr *serialnr)
>  }
>  #endif /* CONFIG_SERIAL_TAG */
>  
> +static const char *get_board_assembly(u16 ver_assembly)
> +{
> +       static char ver_name[MODULE_REV_STR_LEN + 1];
> +
> +       if (ver_assembly < 26) {
> +               ver_name[0] = (char)ver_assembly + 'A';
> +               ver_name[1] = '\0';
> +       } else {
> +               snprintf(ver_name, sizeof(ver_name),
> +                        "#%u", ver_assembly);
> +       }
> +
> +       return ver_name;
> +}
> +
>  int show_board_info(void)
>  {
>         unsigned char ethaddr[6];
> @@ -96,10 +111,10 @@ int show_board_info(void)
>                 snprintf(tdx_serial_str, sizeof(tdx_serial_str),
>                          "%08u", tdx_serial);
>                 snprintf(tdx_board_rev_str, sizeof(tdx_board_rev_str),
> -                        "V%1d.%1d%c",
> +                        "V%1d.%1d%s",
>                          tdx_hw_tag.ver_major,
>                          tdx_hw_tag.ver_minor,
> -                        (char)tdx_hw_tag.ver_assembly + 'A');
> +                        get_board_assembly(tdx_hw_tag.ver_assembly));
>  
>                 env_set("serial#", tdx_serial_str);
>  
> @@ -118,10 +133,10 @@ int show_board_info(void)
>                         snprintf(tdx_car_serial_str, sizeof(tdx_car_serial_str),
>                                  "%08u", tdx_car_serial);
>                         snprintf(tdx_car_rev_str, sizeof(tdx_car_rev_str),
> -                                "V%1d.%1d%c",
> +                                "V%1d.%1d%s",
>                                  tdx_car_hw_tag.ver_major,
>                                  tdx_car_hw_tag.ver_minor,
> -                                (char)tdx_car_hw_tag.ver_assembly + 'A');
> +                                get_board_assembly(tdx_car_hw_tag.ver_assembly));
>  
>                         env_set("carrier_serial#", tdx_car_serial_str);
>                         printf("Carrier: Toradex %s %s, Serial# %s\n",

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf
  2022-06-13 17:35 [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Philippe Schenker
                   ` (3 preceding siblings ...)
  2022-06-30 11:55 ` Marcel Ziswiler
@ 2022-07-07  1:55 ` Tom Rini
  4 siblings, 0 replies; 12+ messages in thread
From: Tom Rini @ 2022-07-07  1:55 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: u-boot, francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Oleksandr Suvorov, Stefan Agner

[-- Attachment #1: Type: text/plain, Size: 483 bytes --]

On Mon, Jun 13, 2022 at 07:35:21PM +0200, Philippe Schenker wrote:

> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> Prevent memory issues that could appear with sprintf. Replace all
> sprintf occurences with snprintf.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

Applied to u-boot/next, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length
  2022-06-13 17:35 ` [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length Philippe Schenker
  2022-06-15 11:59   ` Francesco Dolcini
  2022-06-30 11:57   ` Marcel Ziswiler
@ 2022-07-07  1:55   ` Tom Rini
  2 siblings, 0 replies; 12+ messages in thread
From: Tom Rini @ 2022-07-07  1:55 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: u-boot, francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Oleksandr Suvorov, Stefan Agner

[-- Attachment #1: Type: text/plain, Size: 459 bytes --]

On Mon, Jun 13, 2022 at 07:35:22PM +0200, Philippe Schenker wrote:

> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> With those defines the length can be reused and is in one place
> extendable.
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

Applied to u-boot/next, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version
  2022-06-13 17:35 ` [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version Philippe Schenker
  2022-06-15 11:59   ` Francesco Dolcini
  2022-06-30 12:31   ` Marcel Ziswiler
@ 2022-07-07  1:55   ` Tom Rini
  2 siblings, 0 replies; 12+ messages in thread
From: Tom Rini @ 2022-07-07  1:55 UTC (permalink / raw)
  To: Philippe Schenker
  Cc: u-boot, francesco.dolcini, marcel.ziswiler, Philippe Schenker,
	Denys Drozdov, Oleksandr Suvorov, Simon Glass, Stefan Agner

[-- Attachment #1: Type: text/plain, Size: 1028 bytes --]

On Mon, Jun 13, 2022 at 07:35:23PM +0200, Philippe Schenker wrote:

> From: Philippe Schenker <philippe.schenker@toradex.com>
> 
> There are two decimal digits reserved to encode the module version and
> revision. This code so far implemented A-Z which used 0-25 of this
> range.
> This commit extends the range to make use of all 99 numbers. After
> capital letters the form with a hashtag and number (e.g. #26) is used.
> 
> Examples:
> 
> If the assembly version is between zero and 25 the numbering is as follows,
> as it also has been before this commit:
> 0: V0.0A
> 1: V0.0B
> ...
> 25: V0.0Z
> 
> New numbering of assembly version:
> If the number is between 26 and 99 the new assembly version name is:
> 26: V0.0#26
> 27: V0.0#27
> ...
> 99: V0.0#99
> 
> Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
> Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>
> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>

Applied to u-boot/next, thanks!

-- 
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2022-07-07  1:56 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-13 17:35 [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Philippe Schenker
2022-06-13 17:35 ` [PATCH 2/3] toradex: tdx-cfg-block: use defines for string length Philippe Schenker
2022-06-15 11:59   ` Francesco Dolcini
2022-06-30 11:57   ` Marcel Ziswiler
2022-07-07  1:55   ` Tom Rini
2022-06-13 17:35 ` [PATCH 3/3] toradex: tdx-cfg-block: extend assembly version Philippe Schenker
2022-06-15 11:59   ` Francesco Dolcini
2022-06-30 12:31   ` Marcel Ziswiler
2022-07-07  1:55   ` Tom Rini
2022-06-15 11:59 ` [PATCH 1/3] toradex: tdx-cfg-block: use only snprintf Francesco Dolcini
2022-06-30 11:55 ` Marcel Ziswiler
2022-07-07  1:55 ` Tom Rini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox