gpt4 book ai didi

linux - 通过 gdb 调试 UDI 程序

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:26 26 4
gpt4 key购买 nike

下面的程序询问用户的姓名,问候他,然后给我们他的真实 ID。我们可以假设在 16 个字母的名称(或更长)的情况下,uid 变量将被覆盖并且程序给我们不正确的用户 ID。但事实并非如此。如何使用 gdb 来解释这一点?

#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;
}

最佳答案

像这样更改结构的顺序

struct user_info
{
char name[16];
uid_t uid;
};

它将按照您的预期覆盖。

关于linux - 通过 gdb 调试 UDI 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com