Skip to content

Commit

Permalink
Fixing stack smashing possibility for get_flags.
Browse files Browse the repository at this point in the history
  • Loading branch information
RemcodM committed Dec 5, 2017
1 parent da14019 commit 93e54a9
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 11 deletions.
3 changes: 2 additions & 1 deletion arg_parse.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ char **get_args(char *s, int index)
return args;
}

char *get_flags(char *buf, char *flags)
char *get_flags(char *buf)
{
char* flags = (char *) malloc(BUFSIZE);
while (*buf != '\0') {
if (*buf == '-') {
buf++;
Expand Down
2 changes: 1 addition & 1 deletion arg_parse.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
int get_argc(char *s);
char *skip_flag(char *s);
char **get_args(char *s, int index);
char *get_flags(char *buf, char *flags);
char *get_flags(char *buf);

#endif
16 changes: 8 additions & 8 deletions cmd_mains.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

int rm_main(char *buf)
{
char **args, flags[5];
char **args, *flags;
int pflag = 0, vflag = 0, rflag = 0, hflag = 0, i = 0;

args = get_args(buf, 2);
get_flags(buf, flags);
flags = get_flags(buf);

if (flags[0] != '\0') {
do {
Expand Down Expand Up @@ -51,11 +51,11 @@ int rm_main(char *buf)

int ls_main(char *buf)
{
char **args, flags[4];
char **args;
int aflag = 0, iflag = 0, rflag = 0, hflag = 0, i = 0;

args = get_args(buf, 2);
get_flags(buf, flags);
flags = get_flags(buf);

if (flags[0] != '\0') {
do {
Expand Down Expand Up @@ -101,11 +101,11 @@ int ls_main(char *buf)

int mkdir_main(char *buf)
{
char **args, flags[5];
char **args;
int vflag = 0, hflag = 0, i = 0;

args = get_args(buf, 5);
get_flags(buf, flags);
flags = get_flags(buf, flags);

if (flags[0] != '\0') {
do {
Expand Down Expand Up @@ -144,11 +144,11 @@ int mkdir_main(char *buf)

int cat_main(char *buf)
{
char **args, flags[5];
char **args;
int nflag = 0, hflag = 0, i = 0;

args = get_args(buf, 3);
get_flags(buf, flags);
flags = get_flags(buf, flags);

if (flags[0] != '\0') {
do {
Expand Down
2 changes: 1 addition & 1 deletion misc.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void usage(void);
int get_argc(char *s);
char **get_args(char *s, int index);
char *skip_flags(char *s);
char *get_flags(char *buf, char *flags);
char *get_flags(char *buf);
bool prompt(char *fmt, ...);

#endif

0 comments on commit 93e54a9

Please sign in to comment.