Stlink: ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ с GCC 11 Π½Π΅ выполняСтся

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 9 Π΄Π΅ΠΊ. 2020  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: stlink-org/stlink

Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ stlink 1.6.1 с компилятором GCC 11. Fedora GNU / Linux Rawhide.
Ошибки Π±Ρ‹Π²Π°ΡŽΡ‚:

/builddir/build/BUILD/stlink-1.6.1/src/st-util/gdb-server.c:90:22: error: 'stlink_open_usb' accessing 64 bytes in a region of size 28 [-Werror=stringop-overflow=]
   90 |                 sl = stlink_open_usb(st->logging_level, st->reset, serialnumber, 0);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/builddir/build/BUILD/stlink-1.6.1/src/st-util/gdb-server.c: In function 'serve':
/builddir/build/BUILD/stlink-1.6.1/src/st-util/gdb-server.c:90:22: note: referencing argument 3 of type 'char *'
In file included from /builddir/build/BUILD/stlink-1.6.1/include/stlink.h:297,
                 from /builddir/build/BUILD/stlink-1.6.1/src/st-util/gdb-server.c:27:
/builddir/build/BUILD/stlink-1.6.1/src/usb.h:71:15: note: in a call to function 'stlink_open_usb'
   71 |     stlink_t *stlink_open_usb(enum ugly_loglevel verbose, int reset, char serial[STLINK_SERIAL_MAX_SIZE], int freq);
      |               ^~~~~~~~~~~~~~~
In function 'do_connect',
    inlined from 'do_connect' at /builddir/build/BUILD/stlink-1.6.1/src/st-util/gdb-server.c:87:18,
    inlined from 'main' at /builddir/build/BUILD/stlink-1.6.1/src/st-util/gdb-server.c:212:10:
/builddir/build/BUILD/stlink-1.6.1/src/st-util/gdb-server.c:90:22: error: 'stlink_open_usb' accessing 64 bytes in a region of size 28 [-Werror=stringop-overflow=]
   90 |                 sl = stlink_open_usb(st->logging_level, st->reset, serialnumber, 0);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡ‚Π΅ ΠΌΠ½Π΅ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ.

bucompilation buneeds-fix olinux staturesolved

ВсС 7 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ STLINK_SERIAL_MAX_SIZE define Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ установлСн Π² 28 ?

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ src/st-util/gdb-server.c :

static char serialnumber[28] = {0};

ΠΊ

static char serialnumber[STLINK_SERIAL_MAX_SIZE] = {0};

Π― ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ исправлСния Π² апстримС.

@Vascom Π― Ρ‚ΠΎΠΆΠ΅. Но Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это Π² апстримС, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

ps Π’Ρ‹ создали описаниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π΅ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. @ Nightwalker-87 ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ. Π‘ΠΌ. β„– 906

Π”Π°, это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π¨Π°Π±Π»ΠΎΠ½ Π½Π΅ заботится ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с компиляциСй.

Π¨Π°Π±Π»ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для использования ΠΈ наполнСния ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ описаниС. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎΠ± этом Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ src/st-util/gdb-server.c :

static char serialnumber[28] = {0};

ΠΊ

static char serialnumber[STLINK_SERIAL_MAX_SIZE] = {0};

Π― ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» это (ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΏΡ€ΠΈ тСстировании gcc-11 с Fedora). МСня бСспокоил этот Ρ†ΠΈΠΊΠ» Π² gdb-server.c:
for (size_t k = 0; j> = 0 && k <sizeof (сСрийный Π½ΠΎΠΌΠ΅Ρ€); ++ k, j - = 2) {
char buffer [3] = {0};
memcpy (Π±ΡƒΡ„Π΅Ρ€, optarg + j, 2);
сСрийный Π½ΠΎΠΌΠ΅Ρ€ [Π΄Π»ΠΈΠ½Π° - k] = (uint8_t) strtol (buffer, NULL, 16);

На Ρ‡Ρ‚ΠΎ повлияСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° "сСрийного Π½ΠΎΠΌΠ΅Ρ€Π°". НС зная намСрСния ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π° Π² Ρ†Π΅Π»ΠΎΠΌ, я Π½Π΅ чувствовал сСбя ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ, рСкомСндуя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ «сСрийного Π½ΠΎΠΌΠ΅Ρ€Π°Β».

И Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ людям Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ прСдыстории. Π’ gcc-11 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​диагностика для обнаруТСния Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² Π·Π° допустимыС ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² массива. ΠŸΡ€ΠΎΡ‰Π΅ говоря, Ссли функция ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ массив с фиксированной Π΄Π»ΠΈΠ½ΠΎΠΉ, Ρ‚ΠΎ GCC ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° вСсь массив ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ.

stlink_open_usb ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ свой Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ массив символов ΠΈΠ· 64 Π±Π°ΠΉΡ‚ΠΎΠ², Π½ΠΎ «сСрийный Π½ΠΎΠΌΠ΅Ρ€Β» составляСт всСго 28 Π±Π°ΠΉΡ‚ΠΎΠ², ΠΈ GCC, СстСствСнно, ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ считаСт, Ρ‡Ρ‚ΠΎ stlink_open_usb ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° «сСрийный Π½ΠΎΠΌΠ΅Ρ€Β».

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

vitormhenrique picture vitormhenrique  Β·  13ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

xor-gate picture xor-gate  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

renn0xtek9 picture renn0xtek9  Β·  8ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

chenguokai picture chenguokai  Β·  6ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

gcohara picture gcohara  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ