#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int check_authentication(char *password){
int auth_flag = 0;
char password_buffer[16];
strcpy(password_buffer, password);
if(strcmp(password_buffer, "password1") == 0){
auth_flag = 1;
}
return auth_flag;
}
int main(int argc, char *argv[]){
if(check_authentication(argv[1])){
printf("Access granted!");
}
else{
printf("Access denied!");
}
}
当我输入一个29字节或更多字节的密码时,我获得了访问权限。 在这种情况下,它可能需要16个字节(password_buffer)+ 12个字节(“密码”)= 28个字节。
当我写char password_buffer[12];
时,只需要密码就可以拥有超过13个字节,并获得访问权限。
我不明白,“密码”在哪里?