0
下面的程序詢問用戶名字,問候他,然後給我們他的真實ID。我們可以假設,如果使用16個字母的名字(或更長),uid變量將被覆蓋,程序會給我們提供不正確的用戶ID。但事實並非如此。如何使用gdb
來解釋此問題?gdb調試UDI程序
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
struct user_info
{
uid_t uid;
char name[16];
};
int main(int argc, char *argv[])
{
struct user_info info;
info.uid = getuid();
printf("Your name: ");
scanf("%s", info.name);
printf("Hello, %s!\nYour UID id %d.\n", info.name, (int) info.uid);
return 0;
}