The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"В GNU Wget2 2.2.1 устранена уязвимость, допускающая перезапись произвольных файлов"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"В GNU Wget2 2.2.1 устранена уязвимость, допускающая перезапись произвольных файлов"  +/
Сообщение от opennews (??), 05-Янв-26, 12:19 
Доступен выпуск проекта GNU Wget2 2.2.1, развивающего переписанный с нуля и  полностью  переработанный вариант программы для автоматизации рекурсивной загрузки контента GNU Wget. Wget2 предоставляет набор дополнительных опций, поддерживает загрузку в несколько потоков, позволяет использовать доступную функциональность через библиотеку libwget, поддерживает протоколы HTTP/2 и TLS 1.3, даёт возможность загружать только изменившиеся данные, может сохранять данные с серверов потокового вещания, корректно обрабатывает интернационализированные доменные имена и может перекодировать загружаемое содержимое.  Утилита wget2 поставляется под лицензией GPLv3+, а библиотека под LGPLv3+...

Подробнее: https://www.opennet.ru/opennews/art.shtml?num=64561

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 05-Янв-26, 12:19   +/
> отсутствие должной проверки файловых путей

Никогда такого не было и вот опять

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14, #48, #72

2. Сообщение от Аноним (2), 05-Янв-26, 12:20   –1 +/
Этих вгетов развелось еще... Подскажите, какой самый трушный и в чем разница?
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #17, #74, #76

3. Сообщение от Аноним (3), 05-Янв-26, 12:29    Скрыто ботом-модератором+3 +/
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #6

4. Сообщение от Аноним (-), 05-Янв-26, 12:29   +3 +/
GNU всегда было знаком какчества!
Буквально вчера была новость про GnuPG, которая позволяет обойти верификацию и выполнить свой код.
И вот теперь про GNU Wget...
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #33

6. Сообщение от Аноним (-), 05-Янв-26, 12:39   +1 +/
>Wget2 работает с HTTPS только через GnuTLS. Фтопку такое поделие!

А чо так толсто-то? Правильные люди используют код исключительно написанный для GNU.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #11

9. Сообщение от Фнон (-), 05-Янв-26, 12:44   –4 +/
> переполнение буфера в коде чистки имён файлов в функции get_local_filename_real(), потенциально способное привести к исполнению кода при обработке специально оформленных URL

Звучит круто!

Фикс просто обалденный
        char *fname_esc = (sizeof(tmp) < buf.length * 3 + 1)
-            ? tmp
-            : wget_malloc(buf.length * 3 + 1);
+             ? wget_malloc(buf.length * 3 + 1)
+            : tmp;
Просто перепутали местами значения в тирнарном операторе.
Код был с Jul 29, 2023

Автор и первого б̶е̶к̶д̶о̶р̶а̶ бага и его исправления Tim Rühsen.
Настоящий сидой дыд с "over 30 years of experience"
zymtrace.com/article/welcoming-tim-ruhsen/

Maintainer of GNU libidn, GNU libidn2 and GNU Wget. Contributor to GnuTLS and libmicrohttp.

Интересно за 30 лет он код научился тестировать?
Или "и так сойдет")

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #12, #18, #37

11. Сообщение от Аноним (-), 05-Янв-26, 12:48   +/
В итоге или сидят в консольке или на Хурде?))
Потому что х11 это не ГНУ.
И браузеры тоже.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

12. Сообщение от онанист (?), 05-Янв-26, 12:53   +2 +/
это ж опен сурсе
для тестирования , да и исправления,есть юзеры
тысячи глаз (тм)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #16

13. Сообщение от Аноним (-), 05-Янв-26, 12:54   –1 +/
> переполнение буфера потенциально способное привести к
> исполнению кода

Никогда такого не было и вот опять!

> при обработке специально оформленных URL на загружаемых страницах

А можно дропать юзверю хомяка?
Офгенное решение чтобы всякие хитрецы не выкачивали сайт wget'ом.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #19, #82

14. Сообщение от Аноним (14), 05-Янв-26, 12:56   +8 +/
> Wget2 ... переписанный с нуля и полностью переработанный вариант ... уязвимость, допускающая перезапись произвольных файлов.

Получается, в исходном непереписанном вгете этого не было, а после переписывания - появилось?!

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

16. Сообщение от Аноним (-), 05-Янв-26, 12:58   +/
Зато можно с гордостью за свой код писать:
Around 2014, I began contributing to open-source projects and became (co-)maintainer of GNU Wget, GnuTLS, and GNU libidn. Two of my own projects, Wget2 and libpsl, are now packaged in almost every Linux distribution.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #12

17. Сообщение от Аноним (14), 05-Янв-26, 13:02   –1 +/
Ни тот, ни другой на паскале не написан.

> без проверки фактического размера записываемых данных

В паскале есть ключ компиляции array range check: в зависимости от ситуации делает проверку во время компиляции или при выполнении программы. В си - есть что-то подобное? Если есть, почему программисты об этом не знают? Если нету (а паскаль так-то постарше си будет) - почему никто из программистов не догадался добавить опцию в компилятор?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #22, #25, #60

18. Сообщение от Аноним (18), 05-Янв-26, 13:05   +/
Тут явно же видно, что не в перестановке дело а в условии.

Наиболее вероятно при просмотре условие инвертировал для читабельности, а выражения местами забыл поменять. Как вариант - отвлекли.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #21

19. Сообщение от Аноним (14), 05-Янв-26, 13:08   +/
> Например, атакующий может перезаписать содержимое ... ~/.bashrc и добиться выполнения своего кода в системе

а в bashrc пишем известную команду по зачиствке хомяка...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

20. Сообщение от Аноним (20), 05-Янв-26, 13:09   –1 +/
А мне кажется, сишники специально делают CVE в своих опусах, ради чёрного пиара своих продуктов. Это же тоже пиар. Больше CVE - больше людей узнают о твоём GNU творении из новостей! Вот так вот!
Ответить | Правка | Наверх | Cообщить модератору

21. Сообщение от Аноним (-), 05-Янв-26, 13:11   +/
> Наиболее вероятно при просмотре условие инвертировал для читабельности,
> а выражения местами забыл поменять.

Никто ничего не менял, код зашел одним коммитом.
gitlab.com/gnuwget/wget2/-/commit/3dc30f5f0c6f8feae97f866c537324f821ea05d6

Просто кто-то не умеет в память :)

> Как вариант - отвлекли.

Рептилоиды с Нибиру?)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #18 Ответы: #59

22. Сообщение от Аноним (-), 05-Янв-26, 13:20   +/
> В си - есть что-то подобное?

Пф... ну у тебя и требования!

> Если есть, почему программисты об этом не знают?

Типикал Сишник даже стандарт не читал)

>  Если нету (а паскаль так-то постарше си будет) - почему никто из программистов не догадался добавить опцию в компилятор?

Ты еще спроси когда СИшники осилили добавить boolean в язык))
Подсказка в С23.
Всего 50 лет ушло на то, что уже было в ALGOL 60.

Думаю еще через лет 20 они добавят data type String чтобы перестать каждый раз бегать в поискать null-terminator, терять его и получать очередную CVE.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #29, #39, #69

23. Сообщение от Аноним (23), 05-Янв-26, 13:29   +1 +/
Зачем было переписывать? Юзаю 1.25 и никаких проблем.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #24

24. Сообщение от Аноним (-), 05-Янв-26, 13:39   +3 +/
> Зачем было переписывать? Юзаю 1.25 и никаких проблем.

Ты реально думаешь, что wget 1 был менее дыряв?
У меня для тебя плохие новости))

CVE-2019-5953 9.8 CRITICAL
GNU Wget 1.20.1 and Earlier Buffer Overflow Vulnerability Leading to DoS or Remote Code Execution

CVE-2014-4877 9.3 HIGH - Public exploit exists!
GNU Wget Absolute Path Traversal via FTP LIST Response Allows Remote Code Execution Before 1.16

CVE-2017-13089 9.3 HIGH - Potential exploit
GNU Wget: stack overflow in HTTP protocol handling

CVE-2017-13090 9.3 HIGH
GNU Wget: heap overflow in HTTP protocol handling

CVE-2024-38428 9.1 CRITICAL
GNU Wget url.c Userinfo Semicolon Handling Vulnerability Leading to URI Parsing Errors


Это только со score 9 и больше.
И опять Buffer Overflow, stack overflow, heap overflow

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #23 Ответы: #63

25. Сообщение от Аноним (2), 05-Янв-26, 13:41   –1 +/
>на паскале не написан

Меня вообще не это интересовало. Есть два каких-то wget. Зачем? Какой из них лучше и где глянуть сравнение?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #26, #41

26. Сообщение от Аноним (26), 05-Янв-26, 14:01   +1 +/
Оба хуже.

https://curl.se/wcurl/manual.html

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #31

29. Сообщение от 12yoexpert (ok), 05-Янв-26, 14:26   +5 +/
> Ты еще спроси когда СИшники осилили добавить boolean в язык))
> Подсказка в С23.

вся суть маркетинга растосекты. сходил бы ты в гугл что ли

тебя ещё в проекте не было, когда в си добавили бул. просто на твоих сельских курсах вайтишников ни один инфоцыган об этом не знает

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #30, #32

30. Сообщение от Аноним (30), 05-Янв-26, 14:39   –1 +/
> тебя ещё в проекте не было, когда в си добавили бул.

Если ты про stdbool.h то типиКАЛ костыли для недоязычка
#define true    1
#define false    0

dii.uchile.cl/~daespino/files/Iso_C_1999_definition.pdf
7.16 Boolean type and values <stdbool.h>

Особенно пocoсным выглядит пункт 4
Notwithstanding the provisions of 7.1.3, a program may undefine and perhaps then
redefine the macros bool, true, and false.
Но для недоязыков это нормально.

А вот тебе стандарт С23, надеюсь ты умеешь читать на английском.
open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf
6.4.4.6 Predefined constants
predefined-constant:
false
true

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29 Ответы: #43

31. Сообщение от Аноним (-), 05-Янв-26, 14:49   +/
Такой же дырявый хлам
curl.se/docs/CVE-2023-38545.html
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #26

32. Сообщение от Аноним (32), 05-Янв-26, 14:55    Скрыто ботом-модератором+1 +/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #29

33. Сообщение от Аноним (33), 05-Янв-26, 14:58   +4 +/
Это GNU Wget2. Он хостится в каком-то болоте, не имеющем отношения к GNU.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

35. Сообщение от Аноним (35), 05-Янв-26, 15:42   +/
Прямо-таки парад найденных в СПО уязвимостей. Косвенно это говорит о том, что ведется серьезная работа по уменьшению его дырявости, под будущую кибервойну. Можно на уровне сервисов внедрить _более безопасный_ раст, но  остаться с дыркой в какой-нибудь крон джобе, использующей вгет.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #50

37. Сообщение от Аноним (37), 05-Янв-26, 16:02   +1 +/
> Автор и первого б̶е̶к̶д̶о̶р̶а̶ бага и его исправления Tim Rühsen.

Немцы те еще бекдорщики :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

39. Сообщение от Совершенно другой аноним (?), 05-Янв-26, 16:33   +/
тип boolean, конечно, не осилили добавить, а тип _Bool вообще-то с C99.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #42

41. Сообщение от Аноним (41), 05-Янв-26, 16:44   +4 +/
Лучше всех aria2
https://github.com/aria2/aria2
https://aria2.github.io/
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #25 Ответы: #70

42. Сообщение от Аноним (-), 05-Янв-26, 16:48   –2 +/
> тип boolean, конечно, не осилили добавить, а тип _Bool вообще-то с C99.

Да, я ж написал про stdbool.h

Особенно класно в "стандарте" прописан размер типа.
An object declared as type _Bool is large enough to store the values 0 and 1.
Вот прямым тестом "а фиг его знает, главное чтобы 0-1 влез".

Ну и сверху это щедро обмазывается  ̶г̶о̶в̶н̶ макросами и дефайнами.
Но! В стандарте сказано, что если, не дай бог-машина, у вас где-то undef, то ваша программа превращается в тыкву.

Notwithstanding the provisions of 7.1.3, a program may undefine and perhaps then
redefine the macros bool, true, and false.2

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #39 Ответы: #45, #51

43. Сообщение от Аноним (14), 05-Янв-26, 16:49   –1 +/
> костыли для недоязычка

Помнится, они долго не могли сообразить, что такое nil, меняя определение несколько раз. Потом приняли, что это "тождественно равно числовому нулю".

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30 Ответы: #44, #46

44. Сообщение от Аноним (14), 05-Янв-26, 16:51   –2 +/
P.S. макрос NULL имеется ввиду.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43

45. Сообщение от Аноним (14), 05-Янв-26, 16:55   –1 +/
> Bool is large enough to store the values 0 and 1

Особенно классно, когда делают параметр Bool в многопараметрической функции из какой-нибудь библиотеки, а ты сидишь и гадаешь, а каким размером скомпилирован тот параметр, чтобы не промахнуться при обращении в список параметров?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #47

46. Сообщение от Аноним (46), 05-Янв-26, 17:04   –1 +/
> Помнится, они долго не могли сообразить, что такое nil, меняя определение несколько раз. Потом приняли, что это "тождественно равно числовому нулю".

А определение нуля они определили))?
The macros are
NULL
which expands to an implementation-defined null pointer constant

Вообще кажется что комитет это просто сборище поехавших и наркош.
Мало того что они ввели безумное количество UB хотя можно было бы implementation-defined.
Но этого было мало, и они решили ломать уже то что работало.

До C23 было
if new_size is zero, the behavior is implementation defined (null pointer may be returned (in which case the old memory block may or may not be freed), or some non-null pointer may be returned that may not be used to access storage).

А теперь
zero-sized reallocations with realloc are undefined behavior;

̶с̶е̶л̶ ̶н̶а̶ ̶п̶е̶н̶е̶к̶ написал realloc(ptr, 0); получил UB и твоя програма превратилось в  ̶к̶у̶с̶о̶к̶ ̶к̶а̶л̶а̶ какой-то код с нарушением Conformance

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #43 Ответы: #53

47. Сообщение от Аноним (-), 05-Янв-26, 17:17   –1 +/
> сидишь и гадаешь

Зато не на паскале! (с)

Вооще читая что стандарт, что код удивляешься как оно вообще может работать.
И вспоминаешь байку про "программистов, дятла и конец цивилизации"))

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #45

48. Сообщение от Аноним (48), 05-Янв-26, 17:24   –2 +/
Ребят, когда качаешь через Wget/Wget2 (с обычного https-сайта), провайдер не видит что скачиваешь?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #75, #83

49. Сообщение от Аноним (49), 05-Янв-26, 17:33    Скрыто ботом-модератором+3 +/
Ответить | Правка | Наверх | Cообщить модератору

50. Сообщение от Fyji (-), 05-Янв-26, 17:39   –1 +/
> Прямо-таки парад найденных в СПО уязвимостей.

Системы автоматического поиска проблем просто стали намного круче.
Стали доступны не только спецам.
И внезапно оказалось что диды код писать не умели.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #35 Ответы: #56, #66

51. Сообщение от Совершенно другой аноним (?), 05-Янв-26, 17:50   +1 +/
>> тип boolean, конечно, не осилили добавить, а тип _Bool вообще-то с C99.
> Да, я ж написал про stdbool.h

Ну, тогда при чём тут С23. В нём только, если правильно помню, решили, что путь уже будет bool штатным ключевым словом, а не переопределяться через #define на _Bool.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #42 Ответы: #52

52. Сообщение от Аноним (52), 05-Янв-26, 17:57   –2 +/
В том что в C23 они смогли наконец то формализовать это самый бул.

Но он отличается от старого
The type bool shall have one value bit and (sizeof(bool)*CHAR_BIT)- 1

А теперь сравни это со старым
An object declared as type _Bool is large enough to store the values 0 and 1.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #51 Ответы: #54

53. Сообщение от Аноним (14), 05-Янв-26, 18:22   +/
Продолжаем хохму:

"Dereferencing a null pointer is undefined behavior in C" - вроде нормально, рядовое UB.
...

Ноесть нюанс:

"in x86 real mode, the address 0000:0000 is readable and also usually writable, and dereferencing a pointer to that address is a perfectly valid"

На Си нельзя писать без UB.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46 Ответы: #55, #57

54. Сообщение от Совершенно другой аноним (?), 05-Янв-26, 18:32   +3 +/
> В том что в C23 они смогли наконец то формализовать это самый
> бул.
> Но он отличается от старого
> The type bool shall have one value bit and (sizeof(bool)*CHAR_BIT)- 1
> А теперь сравни это со старым
> An object declared as type _Bool is large enough to store the
> values 0 and 1.

C99 6.2.5 Types
...
2 An object declared as type _Bool is large enough to store the values 0 and 1.
...

C23 6.2.5 Types
...
2 An object declared as type bool is large enough to store the values false and true.
...

И да, в С23, кроме bool в качестве ключевых слов добавили true и false, которые теперь имеют тип bool. Так-что, наверное, Вы хотели сказать, что в С с версии стандарта С23 наконец-то появились значения true и false, а не сам тип, который, как раннее было сказано, появился ещё в С99.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #52

55. Сообщение от Аноним (-), 05-Янв-26, 19:17   +/
> Продолжаем хохму:
> "Dereferencing a null pointer is undefined behavior in C" - вроде нормально,
> рядовое UB.

С одной стороны типа да, но с другой... у вас с 99 стандарта оно было "implementation defined".
Т.е выбор из ограниченного списка который должен быть ЗАДОКУМЕНТИРОВАН.

И тут возжа попадает под хвост и комитет yмcтвeнно oтcтaлых ayтистoв решает сделать undefined behavior.

> Ноесть нюанс:
> "in x86 real mode, the address 0000:0000 is readable and also usually
> writable, and dereferencing a pointer to that address is a perfectly valid"

Хороший нюанс) Хватит чтобы отстрелить ногу по самую опу

> На Си нельзя писать без UB.

Поэтому C in CVE is for C language (c)


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53

56. Сообщение от Аноним (35), 05-Янв-26, 19:27   +/
Системы эффективно применить тоже нужны спецы. В конечном счете все сводится к наличию ресурсов на все это.

> внезапно оказалось что диды код писать не умели

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

57. Сообщение от Аноним (-), 05-Янв-26, 19:36   +/
> "in x86 real mode, the address 0000:0000 is readable and also usually writable, and dereferencing a pointer to that address is a perfectly valid"

А если у нас ARM?
У нас же СИшечка портабельная?
Чего адепты постоянно жужжат что "на вашем #### не поддерживается motorola 68k!!111, а вооот на СИ!"

На ARM Cortex-M за подобное MPU просто сделает Hard Fault.
Ибо нефиг.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #53 Ответы: #67

59. Сообщение от Аноним (18), 05-Янв-26, 19:40   +/
> Никто ничего не менял, код зашел одним коммитом.

Ты явно с Нибиру.

Как то что ты говорил опровергает то, что писал я?

У тебя нибирушная логика.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #21

60. Сообщение от Аноним (60), 05-Янв-26, 20:32   +/
Потому что в си нет массивов, в нем есть указатели.

a[i] это просто синтаксический сахар для *(a + i)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #17 Ответы: #62

62. Сообщение от Аноним (62), 05-Янв-26, 20:41   –1 +/
Не совсем правда. Тип массива есть, но он существует только когда ты определяешь тип автоматической или статической переменной.А вот адресация внутри этого массива - да, синтаксический сахар, потому что массив всегда деградирует в указатель на первый элемент.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #60 Ответы: #68, #73

63. Сообщение от Аноним (62), 05-Янв-26, 20:52   +1 +/
Эээ, а чё ему такие высокие очки накидали? Это юзерспейнсая программа, не требующая особых привилегий, а скор такой, будто баг в ядре нашли или в openssl.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

64. Сообщение от kusb (?), 05-Янв-26, 21:00   +1 +/
Блин, эти уязвимости удивительно похожи, такое ощущение, что с ними можно справиться централизованно.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #65

65. Сообщение от Аноним (14), 05-Янв-26, 21:28   +/
> с ними можно справиться централизованно

Можно. Но почему-то не нужно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #64

66. Сообщение от Аноним (14), 05-Янв-26, 21:29   +/
> диды код писать не умели

Или наоборот - умели? Как история с пейджерами.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #50

67. Сообщение от Аноним (14), 05-Янв-26, 21:41   +1 +/
> На ARM Cortex-M за подобное MPU просто сделает Hard Fault.

На каким именно? На младших M0-ках по этим адресам может быть отображено ОЗУ. Там же таблица векторов - прекрасно читается, иногда пишется (если ОЗУ).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #57

68. Сообщение от Аноним (68), 05-Янв-26, 21:43   –1 +/
> потому что массив всегда деградирует в указатель на первый элемент.

А потом чтобы узнать "а сколько у нас элементов" приходится бегать каждый раз до конца массива.
Или лепить сбоку и хранить отдельно.


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62 Ответы: #71, #81

69. Сообщение от Аноним (69), 05-Янв-26, 22:34   +2 +/
> Ты еще спроси когда СИшники осилили добавить boolean в язык))
> Подсказка в С23.

А ты, бедненький, не знал, что сишка прекрасно обходилась (и обходится) 0 и 1?
> Всего 50 лет ушло на то, что уже было в ALGOL 60.

И? Ты уверен, что под капотом там будет не те же самые 0 и 1?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22

70. Сообщение от хата (?), 06-Янв-26, 00:24   +/
Без поддержки socks даже через tsocks оно не нужно, в эпоху повсеместных квнвпнвлес у каждой второй бабушки.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #41

71. Сообщение от Аноним (69), 06-Янв-26, 01:25   +2 +/
> чтобы узнать "а сколько у нас элементов" приходится бегать каждый раз до конца массива.

То есть,  с Си ты знаком очень поверхностно.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68 Ответы: #79

72. Сообщение от Аноним (-), 06-Янв-26, 02:49   +/
> Никогда такого не было и вот опять

Нестареющая классика жанра :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1

73. Сообщение от Аноним (60), 06-Янв-26, 09:31   +/
это просто такой helper для выделения фиксированного непрерывного объема памяти на стеке (или глобальной преаллокации при старте программы). в итоге все равно имеем указатель
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #62

74. Сообщение от Аноним (74), 06-Янв-26, 11:09   +/
1-й GNU Wget и busybox wget лучше.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

75. Сообщение от bergentroll (ok), 06-Янв-26, 11:32   +/
URL видит, содержимое не видит. От скачивания броузером особо не отличается.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48 Ответы: #77

76. Сообщение от aname (ok), 06-Янв-26, 12:26   +/
Aria2
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

77. Сообщение от Аноним (77), 06-Янв-26, 13:20   +/
а чем url внутни http, отличается от содержимого? парочкой символов перевода строки..а, если https?

> От скачивания броузером особо не отличается.

в любом браузере есть опция экспорта запроса в curl/wget и тд, такой запрос вообще с точность до байта эквивалентен

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #75 Ответы: #78

78. Сообщение от bergentroll (ok), 06-Янв-26, 15:15   +/
> а чем url внутни http, отличается от содержимого?

Вы правы, URL тоже зашифрован. Снаружи только сокет, на который идёт запрос.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #77

79. Сообщение от Аноним (-), 06-Янв-26, 16:40   +/
>> чтобы узнать "а сколько у нас элементов" приходится бегать каждый раз до конца массива.
> То есть,  с Си ты знаком очень поверхностно.

Ну скажи мне сколько символов в unicode строке.
И как их быстро посчитать.
Строки в СИ это же массивы, да?))


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #71 Ответы: #80

80. Сообщение от Совершенно другой аноним (?), 06-Янв-26, 18:43   +/
>>> чтобы узнать "а сколько у нас элементов" приходится бегать каждый раз до конца массива.
>> То есть,  с Си ты знаком очень поверхностно.
> Ну скажи мне сколько символов в unicode строке.

вообще, как-бы, unicode бывают разные.

Если смотреть UTF-8, то там надо пройти все байты, чтобы понять сколько символов. Так-что, считай, всё-равно надо бежать до конца массива и по пути считать символы, которые могут быть и один байт, и два, и три и даже, если сильно повезёт с эмодзи и прочими редкими иероглифами, даже четыре.

Если смотреть UTF-16, то сначала там было всё здорово, число 16-ти битных слов совпадало с числом символов (если правильно помню в бытность UCS-2), но потом, пришли умные люди и придумали суррогатные пары, и теперь и их надо, по нормальному, тоже считать, пробегая до условного конца массива.

И остался UTF-32, в котором число 32-х битных слов совпадает с числом символов.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #79

81. Сообщение от Аноним (81), 06-Янв-26, 23:08   +/
Э, ну вот у меня указатель на первый элемент struct {}. Как мне узнать, сколько их там? Очевидно, никак. Размер должен передаваться как то. Или обычно считать, что элемент один.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #68

82. Сообщение от Аноним (81), 06-Янв-26, 23:24   +/
>    Офгенное решение чтобы всякие хитрецы не выкачивали сайт wget'ом.

Удивительная жадность.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

83. Сообщение от Аноним (83), 07-Янв-26, 11:36   +/
> провайдер не видит что скачиваешь?

Клоудфлуря всё видит.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #48


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2026 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру