I have some problem understanding a code.
Can you please help me to understand this line of code :
strcmp("admin",*(char **)(users + (long)local_24 * 0x10 + 8));
Full code :
void test(void){
int iVar1;
long in_FS_OFFSET;
int local_24;
undefined1 *local_20;
FILE *local_18;
long local_10;
local_10 = *(long *)(in_FS_OFFSET + 0x28);
printf("\n[+] User ID to login with: ");
fflush(stdout);
__isoc99_scanf(&DAT_00102079,&local_24);
getchar();
if ((local_24 < 0) || (nb_users <= local_24)) {
puts("[-] Invalid user ID.");
}
else {
local_20 = users + (long)local_24 * 0x10;
iVar1 = strcmp("admin",*(char **)(users + (long)local_24 * 0x10 + 8));
if (iVar1 == 0) {
puts("[+] Welcome back, admin!");
local_18 = fopen("flag.txt","r");
while( true ) {
iVar1 = fgetc(local_18);
if ((char)iVar1 == -1) break;
putchar((int)(char)iVar1);
}
}
else {
puts("[-] You are not admin.");
}
}
if (local_10 != *(long *)(in_FS_OFFSET + 0x28)) {
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}
return;
}
(Users represents a username that the user can choose.)
Thank you !