Re: Returning non-terminated string in ECPG Informix-compatible function

Поиск
Список
Период
Сортировка
От Oleg Tselebrovskiy
Тема Re: Returning non-terminated string in ECPG Informix-compatible function
Дата
Msg-id 4ab77531d15e9234ea4615dd8501078d@postgrespro.ru
обсуждение исходный текст
Ответ на Re: Returning non-terminated string in ECPG Informix-compatible function  (Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>)
Ответы Re: Returning non-terminated string in ECPG Informix-compatible function  (Oleg Tselebrovskiy <o.tselebrovskiy@postgrespro.ru>)
Список pgsql-hackers
Here's the code for bug reproduction:
#include <stdio.h>
#include <stdlib.h>

EXEC SQL INCLUDE pgtypes_interval.h;
EXEC SQL INCLUDE ecpg_informix.h;

EXEC SQL BEGIN DECLARE SECTION;
    char dirty_str[100] = "aaaaaaaaa_bbbbbbbb_ccccccccc_ddddddddd_";
    interval *interval_ptr;
EXEC SQL END DECLARE SECTION;

int main()
{
    interval_ptr = (interval *) malloc(sizeof(interval));
    interval_ptr->time = 100000000;
    interval_ptr->month = 240;

    printf("dirty_str contents before intoasc: %s\n", dirty_str);
    intoasc(interval_ptr, dirty_str);
    printf("dirty_str contents after intoasc: %s\n", dirty_str);
    return 0;
}

And here's the output:

dirty_str contents before intoasc: 
aaaaaaaaa_bbbbbbbb_ccccccccc_ddddddddd_
dirty_str contents after intoasc: @ 20 years 1 min 40 
secscccc_ddddddddd_

I compiled it with following commands (provided for quicker 
reproduction):
/path/to/pgsql/bin/ecpg informix_bug_example.pgc
gcc -I/path/to/pgsql/include -c informix_bug_example.c
gcc -o informix_bug_example informix_bug_example.o -L/path/to/pgsql/lib 
-lecpg -lecpg_compat

I've also found at least one project that uses intoasc() in it - 
https://github.com/credativ/informix_fdw/

Oleg Tselebrovskiy, Postgres Pro



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

Предыдущее
От: jian he
Дата:
Сообщение: Re: MERGE ... RETURNING
Следующее
От: David Rowley
Дата:
Сообщение: Re: Some revises in adding sorting path