Discussion:
qico
(слишком старое сообщение для ответа)
Brother Rabbit
2019-04-13 08:49:42 UTC
Permalink
Hi, All!

Как правильно собрать сабж?

=== Import Windows Clipboard Start ===
log.c:150:21: warning: format '%d' expects argument of type 'int', but argument
3 has type 'size_t {aka long unsigned int}' [-Wformat=]
fprintf( stderr, "can't malloc() %d bytes of memory\n", len );
^
In file included from /usr/include/stdio.h:936:0,
from headers.h:58,
from log.c:32:
In function 'snprintf',
inlined from 'chatlog_init' at log.c:320:3:
/usr/include/bits/stdio2.h:64:10: error: call to __builtin___snprintf_chk will
always overflow destination buffer
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^
make[3]: *** [log.o] Ошибка 1
make[3]: Выход из каталога `/mnt/disk/src/qico-0.59.1/src'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/mnt/disk/src/qico-0.59.1/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/mnt/disk/src/qico-0.59.1'
make: *** [all] Ошибка 2
=== Import Windows Clipboard End ===

Have nice nights.
Brother Rabbit.
Alexey Vissarionov
2019-04-13 10:20:20 UTC
Permalink
Доброго времени суток, Brother!
13 Apr 2019 11:49:42, ты -> All:

BR> log.c:150:21: warning: format '%d' expects argument of type 'int',
BR> but argument 3 has type 'size_t {aka long unsigned int}' [-Wformat=]
BR> fprintf( stderr, "can't malloc() %d bytes of memory\n", len );

s/%d/%lu/


--
Alexey V. Vissarionov aka Gremlin from Kremlin
gremlin ПРИ gremlin ТЧК ru; +vii-cmiii-ccxxix-lxxix-xlii

... Рожденный ползать, уйдите со взлетной полосы!
Brother Rabbit
2019-04-13 12:24:14 UTC
Permalink
Hi, Alexey!

13 апр 19 13:20, Alexey Vissarionov -> Brother Rabbit:

BR>> log.c:150:21: warning: format '%d' expects argument of type 'int',
BR>> but argument 3 has type 'size_t {aka long unsigned int}' [-Wformat=]
BR>> fprintf( stderr, "can't malloc() %d bytes of memory\n", len );

AV> s/%d/%lu/

=== Import Windows Clipboard Start ===
/usr/include/bits/stdio2.h:64:10: error: call to __builtin___snprintf_chk will
always overflow destination buffer
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^
make[3]: *** [ftn.o] Ошибка 1
make[3]: Выход из каталога `/mnt/disk/src/1/qico/src'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/mnt/disk/src/1/qico/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/mnt/disk/src/1/qico'
make: *** [all] Ошибка 2
=== Import Windows Clipboard End ===

Have nice nights.
Brother Rabbit.
Rinat H. Sadretdinow
2019-04-13 14:43:56 UTC
Permalink
Hello Brother!

13 Apr 19 15:24, you wrote to Alexey Vissarionov:

В log.c в функции chatlog_init строчку

char str[MAX_STRING + 5] = {0};

надо поменять на

char str[MAX_PATH + 5] = {0};

или там же в этой же функции строчку

snprintf( str, MAX_PATH, "/tmp/qlemail.%04lx", (long) getpid());

надо поменять на

snprintf( str, MAX_STRING, "/tmp/qlemail.%04lx", (long) getpid());

Bye!
Rinat H. Sadretdinow
2019-04-13 14:51:38 UTC
Permalink
Hello Brother!

13 Apr 19 17:43, I wrote to you:

RS> В log.c в функции chatlog_init строчку

RS> char str[MAX_STRING + 5] = {0};

RS> надо поменять на

RS> char str[MAX_PATH + 5] = {0};

RS> или там же в этой же функции строчку

RS> snprintf( str, MAX_PATH, "/tmp/qlemail.%04lx", (long) getpid());

RS> надо поменять на

RS> snprintf( str, MAX_STRING, "/tmp/qlemail.%04lx", (long) getpid());

Второй вариант, кстати, предпочтительнее.

Bye!
Brother Rabbit
2019-04-13 15:45:36 UTC
Permalink
Hi, Rinat!

13 апр 19 17:51, Rinat H. Sadretdinow -> Brother Rabbit:

RS>> В log.c в функции chatlog_init строчку

RS>> char str[MAX_STRING + 5] = {0};

RS>> надо поменять на

RS>> char str[MAX_PATH + 5] = {0};

RS>> или там же в этой же функции строчку

RS>> snprintf( str, MAX_PATH, "/tmp/qlemail.%04lx", (long) getpid());

RS>> надо поменять на

RS>> snprintf( str, MAX_STRING, "/tmp/qlemail.%04lx", (long) getpid());

RHS> Второй вариант, кстати, предпочтительнее.

Ругань на второй вариант я и привел. Впрочем, на первый было то же самое.

Have nice nights.
Brother Rabbit.
Brother Rabbit
2019-04-13 15:44:28 UTC
Permalink
Hi, Rinat!

13 апр 19 17:43, Rinat H. Sadretdinow -> Brother Rabbit:

RHS> В log.c в функции chatlog_init строчку

RHS> char str[MAX_STRING + 5] = {0};

RHS> надо поменять на

RHS> char str[MAX_PATH + 5] = {0};

RHS> или там же в этой же функции строчку

RHS> snprintf( str, MAX_PATH, "/tmp/qlemail.%04lx", (long) getpid());

RHS> надо поменять на

RHS> snprintf( str, MAX_STRING, "/tmp/qlemail.%04lx", (long) getpid());

Ни то, ни то не помогло. :(
Такое ощущение, что у меня что-то не установлено или слишком новая версия.

=== Import Windows Clipboard Start ===
[***@BroRabbit qico]$ make
make all-recursive
make[1]: Вход в каталог `/mnt/disk/src/1/qico'
Making all in src
make[2]: Вход в каталог `/mnt/disk/src/1/qico/src'
make all-am
make[3]: Вход в каталог `/mnt/disk/src/1/qico/src'
gcc -DHAVE_CONFIG_H -I. -I.. -g -O2 -Wall -MT ftn.o -MD -MP -MF
.deps/ftn.Tpo -c -o ftn.o ftn.c
ftn.c: In function 'mapname':
ftn.c:329:18: warning: format '%lx' expects argument of type 'long unsigned
int', but argument 4 has type 'UINT32 {aka unsigned int}' [-Wformat=]
snprintf(fn,14,"%08lx%s",crc32s(fn),l);
^
ftn.c:329:18: warning: format '%lx' expects argument of type 'long unsigned
int', but argument 4 has type 'UINT32 {aka unsigned int}' [-Wformat=]
In file included from /usr/include/stdio.h:936:0,
from headers.h:27,
from ftn.c:5:
In function 'snprintf',
inlined from 'closeqpkt' at ftn.c:276:2:
/usr/include/bits/stdio2.h:64:10: error: call to __builtin___snprintf_chk will
always overflow destination buffer
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^
make[3]: *** [ftn.o] Ошибка 1
make[3]: Выход из каталога `/mnt/disk/src/1/qico/src'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/mnt/disk/src/1/qico/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/mnt/disk/src/1/qico'
make: *** [all] Ошибка 2
=== Import Windows Clipboard End ===

Have nice nights.
Brother Rabbit.
Rinat H. Sadretdinow
2019-04-13 18:28:30 UTC
Permalink
Hello Brother!

13 Apr 19 18:44, you wrote to me:

RHS>> В log.c в функции chatlog_init строчку

[...]

BR> Hи то, ни то не помогло. :(
BR> Такое ощущение, что у меня что-то не установлено или слишком новая
BR> версия.

Во, в log.c ошибка пропала.

BR> In function 'snprintf',
BR> inlined from 'closeqpkt' at ftn.c:276:2:
BR> /usr/include/bits/stdio2.h:64:10: error: call to
BR> __builtin___snprintf_chk will always overflow destination buffer
BR> return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
BR> ^

Зато появилась в ftn.c, причём точно такая же. Берём ftn.c, смотрим в нём
функцию closeqpkt:

~~~
void closeqpkt(FILE *f, const ftnaddr_t *fa)
{
char str[MAX_STRING+1];

snprintf( str, MAX_STRING, "%s-%s/%s", qver( 0 ), qver( 1 ), qver( 2
));
closepkt( f, fa, str, cfgs( CFG_STATION ));
}
~~~

и правим её хотя бы так, изменяя определение 'char str' по аналогии с log.c не
'MAX_STRING + 1', а 'MAX_STRING + 5':

~~~

void closeqpkt(FILE *f, const ftnaddr_t *fa)
{
char str[MAX_STRING + 5];

snprintf( str, MAX_STRING, "%s-%s/%s", qver( 0 ), qver( 1 ), qver( 2
));
closepkt( f, fa, str, cfgs( CFG_STATION ));
}
~~~

и опять пробуем собрать. Скорее всего тут ошибки больше не будет, но может
возникнуть аналогичная в другом месте. Там соответственно правим так же, только
другую функцию и в другом файле.

Естественно это всё не "чистовой" вариант, это quick'n'dirty хак просто чтобы
всё собралось (у меня в Fedora Linux 29 всё собирается и без таких вот
напильников и шаманств, но что там конкретно у тебя -- не знаю, поэтому и
предлагаю такое наколенное решение).

Bye!
Rinat H. Sadretdinow
2019-04-13 19:13:20 UTC
Permalink
Hello Brother!

13 Apr 19 21:28, I wrote to you:

BR>> Такое ощущение, что у меня что-то не установлено или слишком
BR>> новая версия.

И да, я клонировал отсюда: https://github.com/ftnapps/qico
Поэтому все мои советы относятся к этой версии, написано что это 0.59.1

Bye!
Brother Rabbit
2019-04-14 05:28:14 UTC
Permalink
Hi, Rinat!

13 апр 19 22:13, Rinat H. Sadretdinow -> Brother Rabbit:

BR>>> Такое ощущение, что у меня что-то не установлено или слишком
BR>>> новая версия.

RHS> И да, я клонировал отсюда: https://github.com/ftnapps/qico
RHS> Поэтому все мои советы относятся к этой версии, написано что это 0.59.1

Взял для чистоты эксперимента эту версию.

[qico]$./configure --disable-binkp --disable-qcc
/* с qcc вообще три экрана ошибок */

Поправил в log.c в функции chatlog_init и все собралось. Спасибо. Ща попробую
запустить.

Have nice nights.
Brother Rabbit.
Brother Rabbit
2019-04-14 04:49:04 UTC
Permalink
Hi, Rinat!

13 апр 19 21:28, Rinat H. Sadretdinow -> Brother Rabbit:

RHS>>> В log.c в функции chatlog_init строчку
RHS> Во, в log.c ошибка пропала.

Да.

RHS> Зато появилась в ftn.c, причём точно такая же. Берём ftn.c, смотрим в
RHS> нём функцию closeqpkt:

Было сразу три варнинга.

RHS> и опять пробуем собрать. Скорее всего тут ошибки больше не будет, но
RHS> может возникнуть аналогичная в другом месте. Там соответственно правим
RHS> так же, только другую функцию и в другом файле.

ftn.c: In function 'mapname':
ftn.c:329:20: warning: format '%lx' expects argument of type 'long unsigned
int', but argument 4 has type 'UINT32 {aka unsigned int}' [-Wformat=]
snprintf(fn+5,14,"%08lx%s",crc32s(fn),l);
^
ftn.c:329:20: warning: format '%lx' expects argument of type 'long unsigned
int', but argument 4 has type 'UINT32 {aka unsigned int}' [-Wformat=]
In file included from /usr/include/stdio.h:936:0,
from headers.h:27,
from ftn.c:5:
In function 'snprintf',
inlined from 'closeqpkt' at ftn.c:276:2:
/usr/include/bits/stdio2.h:64:10: error: call to __builtin___snprintf_chk will
always overflow destination buffer
return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
^
make[3]: *** [ftn.o] Ошибка 1
make[3]: Выход из каталога `/mnt/disk/src/1/qico/src'
make[2]: *** [all] Ошибка 2
make[2]: Выход из каталога `/mnt/disk/src/1/qico/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/mnt/disk/src/1/qico'
make: *** [all] Ошибка 2

RHS> Естественно это всё не "чистовой" вариант, это quick'n'dirty хак просто
RHS> чтобы всё собралось (у меня в Fedora Linux 29 всё собирается и без таких
RHS> вот напильников и шаманств, но что там конкретно у тебя -- не знаю,
RHS> поэтому и предлагаю такое наколенное решение).

Alt Linux 4.9.71-std-def-alt0.M80P.1 #1 SMP Thu Dec 21 01:27:05 UTC 2017
x86_64 GNU/Linux

Have nice nights.
Brother Rabbit.
Rinat H. Sadretdinow
2019-04-14 06:17:04 UTC
Permalink
Hello Brother!

14 Apr 19 07:49, you wrote to me:

BR> ftn.c: In function 'mapname':
BR> ftn.c:329:20: warning: format '%lx' expects argument of type 'long
BR> unsigned int', but argument 4 has type 'UINT32 {aka unsigned int}'
BR> [-Wformat=]
BR> snprintf(fn+5,14,"%08lx%s",crc32s(fn),l);
BR> ^

Hу тут надо просто 'l' убрать из формата "%08lx%s", сделать "%08x%s", тогда
warning уйдёт.

BR> In function 'snprintf',
BR> inlined from 'closeqpkt' at ftn.c:276:2:
BR> /usr/include/bits/stdio2.h:64:10: error: call to
BR> __builtin___snprintf_chk will always overflow destination buffer
BR> return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
BR> ^

А тут я уже советовал в предыдущем письме что сделать.

Bye!

Loading...