Ver código fonte

printenv: Correct out-of-memory condition check.

In common/cmd_nvedit.c, en env_print(), the wrong type is used for len.
hexport_r() returns -1 on error (like OOM), which is converted to
0xffffffff when put in an unsigned. Said value is obviously bigger then
0, and as a result an uninitialized string is then displayed. Other
usages of hexport_r() in the code correctly uses ssize_t to keep its
return value.

Signed-off-by: Maxime Larocque <maxmtl2002@yahoo.ca>
Maxime Larocque 12 anos atrás
pai
commit
22a4a6c5c2
1 arquivos alterados com 2 adições e 1 exclusões
  1. 2 1
      common/cmd_nvedit.c

+ 2 - 1
common/cmd_nvedit.c

@@ -96,7 +96,7 @@ int get_env_id(void)
 static int env_print(char *name, int flag)
 static int env_print(char *name, int flag)
 {
 {
 	char *res = NULL;
 	char *res = NULL;
-	size_t len;
+	ssize_t len;
 
 
 	if (name) {		/* print a single name */
 	if (name) {		/* print a single name */
 		ENTRY e, *ep;
 		ENTRY e, *ep;
@@ -120,6 +120,7 @@ static int env_print(char *name, int flag)
 	}
 	}
 
 
 	/* should never happen */
 	/* should never happen */
+	printf("## Error: cannot export environment\n");
 	return 0;
 	return 0;
 }
 }