History

Fix argv/environ bound checking

herman ten brugge committed 6 years ago

Commit 70b16cb1 parent 8b8e7141 file · +4 −4Browse files

Showing the changes to lib (1 of 1 file). Show all

Unified · Split

lib/bcheck.c+4−4
@@ -945,7 +945,7 @@ __bound_main_arg(int argc, char **argv, char **envp) · 944 unmodified lines
945945 WAIT_SEM ();
946946 for (i = 0; i < argc; i++)
947947 tree = splay_insert((size_t) argv[i], strlen (argv[i]) + 1, tree);
948− tree = splay_insert((size_t) argv, argc * sizeof(char *), tree);
948+ tree = splay_insert((size_t) argv, (argc + 1) * sizeof(char *), tree);
949949 POST_SEM ();
950950 #if BOUND_DEBUG
951951 if (print_calls) {
@@ -954,7 +954,7 @@ __bound_main_arg(int argc, char **argv, char **envp) · 2 unmodified lines
954954 __FILE__, __FUNCTION__,
955955 argv[i], (unsigned long)(strlen (argv[i]) + 1));
956956 dprintf(stderr, "%s, %s(): argv %p 0x%lx\n",
957− __FILE__, __FUNCTION__, argv, argc * sizeof(char *));
957+ __FILE__, __FUNCTION__, argv, (argc + 1) * sizeof(char *));
958958 }
959959 #endif
960960 }
@@ -967,7 +967,7 @@ __bound_main_arg(int argc, char **argv, char **envp) · 6 unmodified lines
967967 tree = splay_insert((size_t) *p, strlen (*p) + 1, tree);
968968 ++p;
969969 }
970− tree = splay_insert((size_t) envp, p - envp, tree);
970+ tree = splay_insert((size_t) envp, (++p - envp) * sizeof(char *), tree);
971971 POST_SEM ();
972972 #if BOUND_DEBUG
973973 if (print_calls) {
@@ -979,7 +979,7 @@ __bound_main_arg(int argc, char **argv, char **envp) · 5 unmodified lines
979979 ++p;
980980 }
981981 dprintf(stderr, "%s, %s(): environ %p 0x%lx\n",
982− __FILE__, __FUNCTION__, envp, p - envp);
982+ __FILE__, __FUNCTION__, envp, (++p - envp) * sizeof(char *));
983983 }
984984 #endif
985985 }

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t