1. Си / Говнокод #12205

    +128

    1. 1
    "%s[@%s='%s']"

    Аццкий смайлик! Сборка запроса XPath для поиска элементов в XML DOM по значениям, переданным из другой функции.

    sprintf(str,"%s[@%s='%s']",elemPath,attrName,value);

    Запостил: GoblinAlchemist, 27 Ноября 2012

    Комментарии (5) RSS

    • Два джентельмена (не считая собаки) выбросили третего из лодки?
      Надеюсь, в аргументах спецсимволы уже заменены соответствующими последовательностями.
      Ответить
      • Ну, аргументы elemPath и attrName приходят из соседней функции, где они жёстко прошиты. А вот value достаётся из XML-документа... Есть пространство для взлома! Первым делом можно дать value длиннее ~80 символов, и всё накроется. А если не накроется, то можно какую-нибудь XPath-инъекцию замутить...
        Ответить
        • XML DOM на чистом си... Хардкор однако.
          Ответить
          • Не, там на самом деле, конечно, C++, COM, ATL и всё такое, но поскольку аццкий смайлик возникает по поводу sprintf и к плюсам прямого отношения не имеет... Да, всё-таки разделение разделов Си и C++ создаёт определённый confusion.
            Ответить
    • можно еще регэксп собрирать - извращение того же уровня, посоветуйте автору
      Ответить

    Добавить комментарий