da Vinci написал:
Разница в том, что при корректном вводе мой код делает то, что от него хочет топикстартер, а ваш код - это всего лишь хеловолд на ncurses с поддержкой utf-8.
точно. а я и не заметил. я честно говоря и код-то по диагонали читал. просто нашёл в нём ошибку. исправлять - это вообще не моя забота. не?
da Vinci написал:
Можете взламывать мой код, я в суд не буду подавать.
могу. но зачем? достаточно указать на уязвимость, это вы её должны устранять, код-то не мой. Впрочем, я её вам уже устранил, ещё до написания эксплоита:
drBatty написал:
надо scanw("%1s") писать
(кстати, может не 1, а 2. я точно не помню, в чём считает scanw())
da Vinci написал:
Прежде чем требовать от меня доказательств, хотелось бы увидеть доказательство своего заявления в виде кода, а то не ясен смысл и смахивает на простой троллинг.
тупой троллинг - у вас. Вместо того, что-бы с фактами опровергнуть мои слова, вы написали просто
da Vinci написал:
А вот это реально бред.
мне что, сразу бежать за пруфами? Нет уж, раз вы назвали что-то "бредом", извольте это опровергнуть.
впрочем, вот по вашей-же ссылке:
рукопедия написал:
Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт (реально только до 4 байт, поскольку использование кодов больше 221 не планируется)
drBatty написал:
почему-же? символ в utf-8 имеет размер 1, 2, и иногда даже 5 байт! к счастью для русского достаточно 2х байт, тип short. но лучше юзать int.
ну и где у меня "бред"? может и 6 быть.
далее википедия пишет:
0x00000000 — 0x0000007F 0xxxxxxx ASCII, в том числе английский алфавит, простейшие знаки препинания и арабские цифры
0x00000080 — 0x000007FF 110xxxxx 10xxxxxx кириллица, расширенная латиница, арабский, армянский, греческий, еврейский и коптский алфавит; сирийское письмо, тана, нко; МФА; некоторые знаки препинания
0x00000800 — 0x0000FFFF 1110xxxx 10xxxxxx 10xxxxxx все другие современные формы письменности, в том числе грузинский алфавит, индийское, китайское, корейское и японское письмо; сложные знаки препинания; математические и другие специальные символы
0x00010000 — 0x001FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx музыкальные символы, редкие китайские иероглифы, вымершие формы письменности
Также теоретически возможны, но не включены в стандарты:
Unicode UTF-8
0x00200000 — 0x03FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
0x04000000 — 0x7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
Замечание: Символы, закодированные в UTF-8, могут быть длиной до шести байт, однако стандарт Unicode не определяет символов выше 0x10ffff, поэтому символы Unicode могут иметь максимальный размер в 4 байта в UTF-8.
хотя IRL и не употребляются 6и битывые^Wшестибайтовые символы, но кодеры должны учитывать их существование, как и существование несимволов. Потому как злоумышленник об этом прекрасно осведомлён.