| Comments: |
зачем вообще строку копировать и бить, когда ее можно просто отпарсить, не говоря уже о том, что апач а) может туда и NULL сунуть, и IPV6 б) с тредами, весь этот шалашик сложится пиздой. занятно еще, что этот продукт стоит $1K, а эйверы подняли такой вой, будто звезду смерти нашли. а как оно славно выпаливается по кукам, и сколько всякого говна тащит в систему... а вот еще охенчик:
#ifdef DEBUG FILE* debug_f; debug_f = fopen(DEBUG, "a"); fprintf(debug_f, "%s ALLOC ERROR: dl_genFilenameSession(), md5, md5, 128\r\n", dl_ClientIP(f)); fclose(debug_f); #endif
и так ВЕЗДЕ, где нужен отладочный вывод. и зачем нужен va args ума не приложу )))
ну, просто парзилку IP можно столькими способами сделать… зато заметь, strncpy(), заботятся о buffer overflow!
>и так ВЕЗДЕ, где нужен отладочный вывод а я давно говорю, что copy и paste должны вызываться комбами из как минимум 128 нажатий. желательно, рандомных. а то и сам грешу, бывает…
я не могу понять зачем вообще строку копировать, ведь функа ее не меняет, а парсер - простейший автомат. и если уже разбили на куски, то почему *= +=, а не atoi? чудовищно одним словом. это не кодер, а создание хаоса. )))
> комбо точно! Ж-)
>я не могу понять зачем вообще строку копировать если бы не k&r, я бы предположил, что они так пытаются обеспечить потокобезопасность (ничего больше придумать не могу).
а, не, вот: strtok() же в строку нули хуячит в полный рост! точнее, может так делать, нигде не запрещено — ну, и часто делает. за что я его и не люблю. видимо, автор оригинала об этом знал. так что без копирования как раз поменяла бы.
такой парзер вообще можно сделать однопроходным, без всей этой ерунды. с проверкой на переполнение вдобавок.
хотя, конечно, это всё херня, потому что форм записи IPv4 немеряно, и годная aton их все распознаёт. но нынешние сумрачные гении не в курсе, видимо.
внутри апача не так много вариантов IPV4/6
большая часть хакеров - это просто пиздец, даже студентота и то лучше (понтов меньше)
>внутри апача не так много вариантов IPV4/6 лучше перебдеть, чем недобдеть! ну ладно, упёрло молодое дарование функцию, не хочет из библиотеки дёргать — так почему тогда не пойти и не упереть её из glibc, например? там кода-то…
дарование не знает, что эта функа есть. а glibc оно юзает от души, ведь идет сборка на целевой системе из сырков + apxs, это ж школота - модифицировать бинари не умеют, там же еще поди скриптов на шелле вагон, чтобы весь девел вытащить ))))
беру свои слова обратно, оно знает, что есть ntoa
if (rec.ut_addr > 0) { struct in_addr address_struct; address_struct.s_addr = rec.ut_addr; ip = inet_ntoa(address_struct); dl_SendIPToLocalBlacklist(f); }
толи тащили все подряд со stackoverflow, то ли методом проб и ошибок, а может просто php головного мозга
блять. посмотрел на предыдущий пост (address_struct unused), и точно:
void dl_SendIPToLocalBlacklist(ap_filter_t *f) { char *filename = dl_genFilenameBlacklist(f); FILE* fd; fd = fopen(filename, "w"); if (fd != NULL) { fclose(fd); } }
а, понял, это файл-флаг, только забанит он ip текущей сессии, а не ip из utmp
ВСЕ! хватит с меня глубин хакерской мысли.
хотел пошутить на тему того, что скоро будут с собой таскать собраные шланг+ллвм для всех нужных архитектур и всё остальное нужное в архиве, но потом подумал, что это может и не шуткой оказаться.
с нетерпением жду, когда они найдут что-нибудь вроде DynamoRIO и попробуют его прикрутить. лулзов должно быть значительно больше.
"и не шуткой оказаться."
пытаются. только для того, чтобы хакать (в хорошем смысле этого слова) LLVM нужны мозги...
пока видел только переделанные tinyc и llvm на предмет поксоренных строк и перестановок базовых блоков, но ради такой фигни можно и не брать продвинутые тулзы, все это можно сделать прямо в экзешке, а то, что нельзя, ну так это опять-таки нужны мозги, так что галктеко в безопасности. | |