may be a buffer overflow problem

Поиск
Список
Период
Сортировка
От Winter Loo
Тема may be a buffer overflow problem
Дата
Msg-id 4bf5ab75.6fd4.19015aecf9e.Coremail.winterloo@126.com
обсуждение исходный текст
Ответы Re: may be a buffer overflow problem
Re: may be a buffer overflow problem
Список pgsql-hackers
Hi hackers,

I am using gcc version 11.3.0 to compile postgres source code. Gcc complains about the following line:

```c
strncpy(sqlca->sqlstate, "YE001", sizeof(sqlca->sqlstate));
```

with error as:

misc.c:529:17: error: ‘strncpy’ output truncated before terminating nul copying 5 bytes from a string of the same length [-Werror=stringop-truncation]

I find the definition of `sqlca->sqlstate` and it has only 5 bytes. When the statement

```c
strncpy(sqlca->sqlstate, "YE001", sizeof(sqlca->sqlstate));
```

get executed, `sqlca->sqlstate` will have no '\0' byte which makes me anxious when someone prints that as a string. Indeed, I found the code(in src/interfaces/ecpg/ecpglib/misc.c) does that,

```c
fprintf(debugstream, "[NO_PID]: sqlca: code: %ld, state: %s\n",
sqlca->sqlcode, sqlca->sqlstate);
```

Is there any chance to fix the code?

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Dominique Devienne
Дата:
Сообщение: Re: Improve the granularity of PQsocketPoll's timeout parameter?
Следующее
От: "Anton A. Melnikov"
Дата:
Сообщение: Don't process multi xmax in FreezeMultiXactId() if it is already marked as invalid.