This is in C:
— Q1.1 : Expain the 3 outputs observed using the structure of the code and why this code is poor.
— Q1.2 With few changes you can improve the code. You need to replace gets() and strcmp() with the similar ones bur more safe. Do a google search, find them and rewrite the code again.Send back the new link.
*/
#include <stdio.h>
#include <string.h>
int main(void)
{
char buffer[4];
int pass_flag = 0;
printf(“n Enter the password : n”);
gets(buffer);
if(strcmp(buffer, “pswd”))
{
printf (“n Wrong Password n”);
}
else
{
printf (“n Correct Password n”);
pass_flag = 1;
}
if(pass_flag)
{
/* Now Give root or admin rights to user*/
printf (“n Root privileges given to the user n”);
}
return 0;
}
Expert Answer
The code is not making proper use of strcmp. code wshould not give root privledges
if pswd is entered.
output 1:
Enter the password :
pswd
Correct Password
Root privileges given to the user
output 2:
Enter the password :
psswd
Wrong Password
The code is poor because of the warning: the `gets’ function is dangerous and should not be used.
gets should be avoided in code.
instead scanf can be used
2)
This can be rectified by using scanf and modifying the
strcmp function in the code
updated code:#include <stdio.h>
#include <string.h>
int main(void)
{
char buffer[4];
int pass_flag = 0;
printf(“nEnter the password : n”);
scanf(“%s”,buffer);
if(strcmp(buffer, “pswd”) != 0)
{
printf (“n Wrong Password n”);
}
else
{
printf (“n Correct Password n”);
pass_flag = 1;
}
if(pass_flag == 1)
{
/* Now Give root or admin rights to user*/
printf (“n Root privileges given to the user n”);
}
return 0;
}
output:
Enter the password :
pswd
Correct Password
Root privileges given to the user