1)_Modify the code to fix the buffer overflow problem by using a safe C function instead of the unsafe gets() and using some C function to compare the strings. Hints: fgets() or scanf(), strncmp(), strlen(). For scanf(), you would have to use format specifiers to specify the width of the string for the output. 2) Your modified program should display an output “wrong password” for each of the following four cases: Case 1: input password = "by". (User input is half that of given password text) Case 2: input password = "bytebyte". (User input is twice that of given password text) Case 3: input password = "1234". (User input is a garbage text of same length) Case 4: input password = "12345678901234567890". (User input is a garbage text
by using a safe C function instead of the unsafe gets() and using some C function to compare the strings.
Hints: fgets() or scanf(), strncmp(), strlen(). For scanf(), you would have to use format
specifiers to specify the width of the string for the output.
Case 1: input password = "by". (User input is half that of given password text)
Case 2: input password = "bytebyte". (User input is twice that of given password text)
Case 3: input password = "1234". (User input is a garbage text of same length)
Case 4: input password = "12345678901234567890". (User input is a garbage text
which is longer than the given password)
the code :
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void) {
// Use a struct to force local variable memory ordering
struct {
char buff[5];
char pass;
} localinfo;
localinfo.pass = 0; // initialize a flag as 0
printf("\n Enter the password:\n");
gets(localinfo.buff); // Get the password from the user; this needs to
replace with a safer C function
if(strcmp(localinfo.buff, "byte")) { // Check the password
printf ("\n Wrong Password\n");
}
else {
printf("\n Correct Password\n");
localinfo.pass = 1; // Set a flag denoting correct pass
}
if(localinfo.pass) {/* Now Give root or admin rights to user*/
printf("\nCongratulations! Root privileges given to the user!\n");
}
return 0;
}
thanks already :)
Trending now
This is a popular solution!
Step by step
Solved in 2 steps