최찬표
최찬표

Reputation: 1

Doesn't GCC recognize the function "read"?

I was solving the pwnable.kr's fd problem and wondered how does the fd.c code works. So I copied the c code and I put it on GCC to see how it works. And it has an error says: "implicit declaration of function ‘read’; did you mean ‘fread’?" Does GCC not recognize the Read function on C?

The code looks like:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char buf[32];
int main(int argc, char* argv[], char* envp[]){
        if(argc<2){
                printf("pass argv[1] a number\n");
                return 0;
        }
        int fd = atoi( argv[1] ) - 0x1234;
        int len = 0;
        len = read(fd, buf, 32);
        if(!strcmp("LETMEWIN\n", buf)){
                printf("good job :)\n");
                system("/bin/cat flag");
                exit(0);
        }
        printf("learn about Linux file IO\n");
        return 0;

}

Thank you

Upvotes: 0

Views: 383

Answers (1)

ShellCode
ShellCode

Reputation: 1172

From the man page (man 2 read) :

NAME

read - read from a file descriptor

SYNOPSIS

#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);

You must include unistd.h and the warning will go away.

Upvotes: 2

Related Questions