[Forensics-changes] [yara] 03/05: Drop patch
Hilko Bengen
bengen at moszumanska.debian.org
Tue Jan 16 12:50:43 UTC 2018
This is an automated email from the git hooks/post-receive script.
bengen pushed a commit to branch master
in repository yara.
commit 826b2b64812bbfc914ba6b811b4fef4be12631f1
Author: Hilko Bengen <bengen at debian.org>
Date: Tue Jan 16 13:44:39 2018 +0100
Drop patch
---
debian/patches/0002-Fix-issue-796.patch | 965 --------------------------------
debian/patches/series | 1 -
2 files changed, 966 deletions(-)
diff --git a/debian/patches/0002-Fix-issue-796.patch b/debian/patches/0002-Fix-issue-796.patch
deleted file mode 100644
index 9d6ea86..0000000
--- a/debian/patches/0002-Fix-issue-796.patch
+++ /dev/null
@@ -1,965 +0,0 @@
-From: "Victor M. Alvarez" <vmalvarez at virustotal.com>
-Date: Tue, 21 Nov 2017 19:33:57 +0100
-Subject: Fix issue #796.
-
----
- libyara/compiler.c | 65 +------------
- libyara/lexer.c | 226 ++++++++++++++++++++++++++++-----------------
- libyara/lexer.l | 64 ++++++++++++-
- tests/data/baz.yar | 1 +
- tests/data/foo.yar | 3 +
- tests/data/include/bar.yar | 3 +
- tests/data/true.yar | 1 -
- tests/test-api.c | 4 +-
- tests/test-rules.c | 6 +-
- 9 files changed, 221 insertions(+), 152 deletions(-)
- create mode 100644 tests/data/baz.yar
- create mode 100644 tests/data/foo.yar
- create mode 100644 tests/data/include/bar.yar
- delete mode 100644 tests/data/true.yar
-
-diff --git a/libyara/compiler.c b/libyara/compiler.c
-index d362f03..2661e8d 100644
---- a/libyara/compiler.c
-+++ b/libyara/compiler.c
-@@ -56,7 +56,7 @@ static void _yr_compiler_default_include_free(
- const char* callback_result_ptr,
- void* user_data)
- {
-- if(callback_result_ptr != NULL)
-+ if (callback_result_ptr != NULL)
- {
- yr_free((void*)callback_result_ptr);
- }
-@@ -73,14 +73,7 @@ const char* _yr_compiler_default_include_callback(
- struct stat stbuf;
- #endif
-
-- #ifdef _MSC_VER
-- char* b = NULL;
-- #endif
--
-- char* s = NULL;
-- char* f;
- char* file_buffer;
-- char buffer[1024];
-
- #ifdef _MSC_VER
- long file_size;
-@@ -90,62 +83,11 @@ const char* _yr_compiler_default_include_callback(
-
- int fd = -1;
-
-- if (calling_rule_filename != NULL)
-- strlcpy(buffer, calling_rule_filename, sizeof(buffer));
-- else
-- buffer[0] = '\0';
--
-- s = strrchr(buffer, '/');
--
-- #ifdef _MSC_VER
-- b = strrchr(buffer, '\\'); // in Windows both path delimiters are accepted
-- #endif
--
- #ifdef _MSC_VER
-- if (s != NULL || b != NULL)
-+ _sopen_s(&fd, include_name, _O_RDONLY, _SH_DENYRW, _S_IREAD);
- #else
-- if (s != NULL)
-+ fd = open(include_name, O_RDONLY);
- #endif
-- {
-- #ifdef _MSC_VER
-- f = (b > s) ? (b + 1) : (s + 1);
-- #else
-- f = s + 1;
-- #endif
--
-- strlcpy(f, include_name, sizeof(buffer) - (f - buffer));
--
-- f = buffer;
--
-- // SECURITY: Potential for directory traversal here.
-- #ifdef _MSC_VER
-- _sopen_s(&fd, f, _O_RDONLY, _SH_DENYRW, _S_IREAD);
-- #else
-- fd = open(f, O_RDONLY);
-- #endif
--
-- // if include file was not found relative to current source file,
-- // try to open it with path as specified by user (maybe user wrote
-- // a full path)
-- if (fd == -1)
-- {
-- f = (char*) include_name;
-- }
-- }
-- else
-- {
-- f = (char*) include_name;
-- }
--
-- if (fd == -1)
-- {
-- // SECURITY: Potential for directory traversal here.
-- #ifdef _MSC_VER
-- _sopen_s(&fd, f, _O_RDONLY, _SH_DENYRW, _S_IREAD);
-- #else
-- fd = open(f, O_RDONLY);
-- #endif
-- }
-
- if (fd == -1)
- return NULL;
-@@ -220,6 +162,7 @@ YR_API int yr_compiler_create(
- new_compiler->errors = 0;
- new_compiler->callback = NULL;
- new_compiler->include_callback = _yr_compiler_default_include_callback;
-+ new_compiler->incl_clbk_user_data = NULL;
- new_compiler->include_free = _yr_compiler_default_include_free;
- new_compiler->last_error = ERROR_SUCCESS;
- new_compiler->last_error_line = 0;
-diff --git a/libyara/lexer.c b/libyara/lexer.c
-index a2e008b..fbe1a38 100644
---- a/libyara/lexer.c
-+++ b/libyara/lexer.c
-@@ -1010,11 +1010,25 @@ with noyywrap then we can remove this pragma.
- #define snprintf _snprintf
- #endif
-
--#line 1013 "lexer.c"
-+static int is_absolute_path(
-+ char* path)
-+{
-+ if (path == NULL)
-+ return FALSE;
-+
-+ #if defined(_WIN32) || defined(__CYGWIN__)
-+ return strlen(path) > 2 &&
-+ path[1] == ':' && (path[2] == '/' || path[2] == '\\');
-+ #else
-+ return strlen(path) > 0 && path[0] == '/';
-+ #endif
-+}
-+
-+#line 1027 "lexer.c"
- #define YY_NO_UNISTD_H 1
- #define YY_NO_INPUT 1
-
--#line 1017 "lexer.c"
-+#line 1031 "lexer.c"
-
- #define INITIAL 0
- #define str 1
-@@ -1290,10 +1304,10 @@ YY_DECL
- }
-
- {
--#line 144 "lexer.l"
-+#line 158 "lexer.l"
-
-
--#line 1296 "lexer.c"
-+#line 1310 "lexer.c"
-
- while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
- {
-@@ -1360,208 +1374,208 @@ do_action: /* This label is used only to access EOF actions. */
-
- case 1:
- YY_RULE_SETUP
--#line 146 "lexer.l"
-+#line 160 "lexer.l"
- { return _DOT_DOT_; }
- YY_BREAK
- case 2:
- YY_RULE_SETUP
--#line 147 "lexer.l"
-+#line 161 "lexer.l"
- { return _LT_; }
- YY_BREAK
- case 3:
- YY_RULE_SETUP
--#line 148 "lexer.l"
-+#line 162 "lexer.l"
- { return _GT_; }
- YY_BREAK
- case 4:
- YY_RULE_SETUP
--#line 149 "lexer.l"
-+#line 163 "lexer.l"
- { return _LE_; }
- YY_BREAK
- case 5:
- YY_RULE_SETUP
--#line 150 "lexer.l"
-+#line 164 "lexer.l"
- { return _GE_; }
- YY_BREAK
- case 6:
- YY_RULE_SETUP
--#line 151 "lexer.l"
-+#line 165 "lexer.l"
- { return _EQ_; }
- YY_BREAK
- case 7:
- YY_RULE_SETUP
--#line 152 "lexer.l"
-+#line 166 "lexer.l"
- { return _NEQ_; }
- YY_BREAK
- case 8:
- YY_RULE_SETUP
--#line 153 "lexer.l"
-+#line 167 "lexer.l"
- { return _SHIFT_LEFT_; }
- YY_BREAK
- case 9:
- YY_RULE_SETUP
--#line 154 "lexer.l"
-+#line 168 "lexer.l"
- { return _SHIFT_RIGHT_; }
- YY_BREAK
- case 10:
- YY_RULE_SETUP
--#line 155 "lexer.l"
-+#line 169 "lexer.l"
- { return _PRIVATE_; }
- YY_BREAK
- case 11:
- YY_RULE_SETUP
--#line 156 "lexer.l"
-+#line 170 "lexer.l"
- { return _GLOBAL_; }
- YY_BREAK
- case 12:
- YY_RULE_SETUP
--#line 157 "lexer.l"
-+#line 171 "lexer.l"
- { return _RULE_; }
- YY_BREAK
- case 13:
- YY_RULE_SETUP
--#line 158 "lexer.l"
-+#line 172 "lexer.l"
- { return _META_; }
- YY_BREAK
- case 14:
- YY_RULE_SETUP
--#line 159 "lexer.l"
-+#line 173 "lexer.l"
- { return _STRINGS_; }
- YY_BREAK
- case 15:
- YY_RULE_SETUP
--#line 160 "lexer.l"
-+#line 174 "lexer.l"
- { return _ASCII_; }
- YY_BREAK
- case 16:
- YY_RULE_SETUP
--#line 161 "lexer.l"
-+#line 175 "lexer.l"
- { return _WIDE_; }
- YY_BREAK
- case 17:
- YY_RULE_SETUP
--#line 162 "lexer.l"
-+#line 176 "lexer.l"
- { return _FULLWORD_; }
- YY_BREAK
- case 18:
- YY_RULE_SETUP
--#line 163 "lexer.l"
-+#line 177 "lexer.l"
- { return _NOCASE_; }
- YY_BREAK
- case 19:
- YY_RULE_SETUP
--#line 164 "lexer.l"
-+#line 178 "lexer.l"
- { return _CONDITION_; }
- YY_BREAK
- case 20:
- YY_RULE_SETUP
--#line 165 "lexer.l"
-+#line 179 "lexer.l"
- { return _TRUE_; }
- YY_BREAK
- case 21:
- YY_RULE_SETUP
--#line 166 "lexer.l"
-+#line 180 "lexer.l"
- { return _FALSE_; }
- YY_BREAK
- case 22:
- YY_RULE_SETUP
--#line 167 "lexer.l"
-+#line 181 "lexer.l"
- { return _NOT_; }
- YY_BREAK
- case 23:
- YY_RULE_SETUP
--#line 168 "lexer.l"
-+#line 182 "lexer.l"
- { return _AND_; }
- YY_BREAK
- case 24:
- YY_RULE_SETUP
--#line 169 "lexer.l"
-+#line 183 "lexer.l"
- { return _OR_; }
- YY_BREAK
- case 25:
- YY_RULE_SETUP
--#line 170 "lexer.l"
-+#line 184 "lexer.l"
- { return _AT_; }
- YY_BREAK
- case 26:
- YY_RULE_SETUP
--#line 171 "lexer.l"
-+#line 185 "lexer.l"
- { return _IN_; }
- YY_BREAK
- case 27:
- YY_RULE_SETUP
--#line 172 "lexer.l"
-+#line 186 "lexer.l"
- { return _OF_; }
- YY_BREAK
- case 28:
- YY_RULE_SETUP
--#line 173 "lexer.l"
-+#line 187 "lexer.l"
- { return _THEM_; }
- YY_BREAK
- case 29:
- YY_RULE_SETUP
--#line 174 "lexer.l"
-+#line 188 "lexer.l"
- { return _FOR_; }
- YY_BREAK
- case 30:
- YY_RULE_SETUP
--#line 175 "lexer.l"
-+#line 189 "lexer.l"
- { return _ALL_; }
- YY_BREAK
- case 31:
- YY_RULE_SETUP
--#line 176 "lexer.l"
-+#line 190 "lexer.l"
- { return _ANY_; }
- YY_BREAK
- case 32:
- YY_RULE_SETUP
--#line 177 "lexer.l"
-+#line 191 "lexer.l"
- { return _ENTRYPOINT_; }
- YY_BREAK
- case 33:
- YY_RULE_SETUP
--#line 178 "lexer.l"
-+#line 192 "lexer.l"
- { return _FILESIZE_; }
- YY_BREAK
- case 34:
- YY_RULE_SETUP
--#line 179 "lexer.l"
-+#line 193 "lexer.l"
- { return _MATCHES_; }
- YY_BREAK
- case 35:
- YY_RULE_SETUP
--#line 180 "lexer.l"
-+#line 194 "lexer.l"
- { return _CONTAINS_; }
- YY_BREAK
- case 36:
- YY_RULE_SETUP
--#line 181 "lexer.l"
-+#line 195 "lexer.l"
- { return _IMPORT_; }
- YY_BREAK
- case 37:
- YY_RULE_SETUP
--#line 184 "lexer.l"
-+#line 198 "lexer.l"
- { BEGIN(comment); }
- YY_BREAK
- case 38:
- YY_RULE_SETUP
--#line 185 "lexer.l"
-+#line 199 "lexer.l"
- { BEGIN(INITIAL); }
- YY_BREAK
- case 39:
- /* rule 39 can match eol */
- YY_RULE_SETUP
--#line 186 "lexer.l"
-+#line 200 "lexer.l"
- { /* skip comments */ }
- YY_BREAK
- case 40:
- YY_RULE_SETUP
--#line 189 "lexer.l"
-+#line 203 "lexer.l"
- { /* skip single-line comments */ }
- YY_BREAK
- case 41:
- YY_RULE_SETUP
--#line 192 "lexer.l"
-+#line 206 "lexer.l"
- {
- yyextra->lex_buf_ptr = yyextra->lex_buf;
- yyextra->lex_buf_len = 0;
-@@ -1571,33 +1585,76 @@ YY_RULE_SETUP
- case 42:
- /* rule 42 can match eol */
- YY_RULE_SETUP
--#line 199 "lexer.l"
-+#line 213 "lexer.l"
- { yytext_to_buffer; }
- YY_BREAK
- case 43:
- YY_RULE_SETUP
--#line 202 "lexer.l"
-+#line 216 "lexer.l"
- {
-
- if (compiler->include_callback != NULL)
- {
-+ #ifdef _MSC_VER
-+ char* b = NULL;
-+ #endif
-+ char* s = NULL;
-+ char* f;
-+
-+ char buffer[1024];
- const char* included_rules;
- char* current_file_name;
-+ char* include_path;
-
- *yyextra->lex_buf_ptr = '\0'; // null-terminate included file path
-
-- // move path of current source file into buffer
- current_file_name = yr_compiler_get_current_file_name(compiler);
-
-+ if (current_file_name == NULL ||
-+ compiler->include_callback != _yr_compiler_default_include_callback ||
-+ is_absolute_path(yyextra->lex_buf))
-+ {
-+ include_path = yyextra->lex_buf;
-+ }
-+ else
-+ {
-+ strlcpy(buffer, current_file_name, sizeof(buffer));
-+ s = strrchr(buffer, '/');
-+
-+ #ifdef _MSC_VER
-+ b = strrchr(buffer, '\\'); // in Windows both path delimiters are accepted
-+ #endif
-+
-+ #ifdef _MSC_VER
-+ if (s != NULL || b != NULL)
-+ #else
-+ if (s != NULL)
-+ #endif
-+ {
-+ #ifdef _MSC_VER
-+ f = (b > s) ? (b + 1) : (s + 1);
-+ #else
-+ f = s + 1;
-+ #endif
-+
-+ strlcpy(f, yyextra->lex_buf, sizeof(buffer) - (f - buffer));
-+ include_path = buffer;
-+ }
-+ else
-+ {
-+ include_path = yyextra->lex_buf;
-+ }
-+ }
-+
- included_rules = compiler->include_callback(
-- yyextra->lex_buf,
-+ include_path,
- current_file_name,
- compiler->current_namespace->name,
- compiler->incl_clbk_user_data);
-
- if (included_rules != NULL)
- {
-- int error_code = _yr_compiler_push_file_name(compiler, yyextra->lex_buf);
-+ int error_code = _yr_compiler_push_file_name(compiler, include_path);
-
- if (error_code != ERROR_SUCCESS)
- {
-@@ -1665,7 +1722,7 @@ case YY_STATE_EOF(str):
- case YY_STATE_EOF(regexp):
- case YY_STATE_EOF(include):
- case YY_STATE_EOF(comment):
--#line 286 "lexer.l"
-+#line 343 "lexer.l"
- {
-
- YR_COMPILER* compiler = yyget_extra(yyscanner);
-@@ -1681,7 +1738,7 @@ case YY_STATE_EOF(comment):
- YY_BREAK
- case 44:
- YY_RULE_SETUP
--#line 300 "lexer.l"
-+#line 357 "lexer.l"
- {
-
- yylval->c_string = yr_strdup(yytext);
-@@ -1694,7 +1751,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 45:
- YY_RULE_SETUP
--#line 311 "lexer.l"
-+#line 368 "lexer.l"
- {
-
- yylval->c_string = yr_strdup(yytext);
-@@ -1707,7 +1764,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 46:
- YY_RULE_SETUP
--#line 322 "lexer.l"
-+#line 379 "lexer.l"
- {
-
- yylval->c_string = yr_strdup(yytext);
-@@ -1726,7 +1783,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 47:
- YY_RULE_SETUP
--#line 339 "lexer.l"
-+#line 396 "lexer.l"
- {
-
- yylval->c_string = yr_strdup(yytext);
-@@ -1745,7 +1802,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 48:
- YY_RULE_SETUP
--#line 356 "lexer.l"
-+#line 413 "lexer.l"
- {
-
- yylval->c_string = yr_strdup(yytext);
-@@ -1764,7 +1821,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 49:
- YY_RULE_SETUP
--#line 373 "lexer.l"
-+#line 430 "lexer.l"
- {
-
- char* text = yytext;
-@@ -1805,7 +1862,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 50:
- YY_RULE_SETUP
--#line 412 "lexer.l"
-+#line 469 "lexer.l"
- {
-
- if (strlen(yytext) > 128)
-@@ -1821,7 +1878,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 51:
- YY_RULE_SETUP
--#line 426 "lexer.l"
-+#line 483 "lexer.l"
- {
-
- char *endptr;
-@@ -1864,7 +1921,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 52:
- YY_RULE_SETUP
--#line 466 "lexer.l"
-+#line 523 "lexer.l"
- {
- yylval->double_ = atof(yytext);
- return _DOUBLE_;
-@@ -1872,7 +1929,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 53:
- YY_RULE_SETUP
--#line 471 "lexer.l"
-+#line 528 "lexer.l"
- {
-
- char *endptr;
-@@ -1891,7 +1948,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 54:
- YY_RULE_SETUP
--#line 487 "lexer.l"
-+#line 544 "lexer.l"
- {
-
- char *endptr;
-@@ -1910,7 +1967,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 55:
- YY_RULE_SETUP
--#line 504 "lexer.l"
-+#line 561 "lexer.l"
- { /* saw closing quote - all done */
-
- alloc_sized_string(s, yyextra->lex_buf_len);
-@@ -1926,7 +1983,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 56:
- YY_RULE_SETUP
--#line 518 "lexer.l"
-+#line 575 "lexer.l"
- {
-
- lex_check_space_ok("\t", yyextra->lex_buf_len, LEX_BUF_SIZE);
-@@ -1936,7 +1993,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 57:
- YY_RULE_SETUP
--#line 526 "lexer.l"
-+#line 583 "lexer.l"
- {
-
- lex_check_space_ok("\n", yyextra->lex_buf_len, LEX_BUF_SIZE);
-@@ -1946,7 +2003,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 58:
- YY_RULE_SETUP
--#line 534 "lexer.l"
-+#line 591 "lexer.l"
- {
-
- lex_check_space_ok("\"", yyextra->lex_buf_len, LEX_BUF_SIZE);
-@@ -1956,7 +2013,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 59:
- YY_RULE_SETUP
--#line 542 "lexer.l"
-+#line 599 "lexer.l"
- {
-
- lex_check_space_ok("\\", yyextra->lex_buf_len, LEX_BUF_SIZE);
-@@ -1966,7 +2023,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 60:
- YY_RULE_SETUP
--#line 550 "lexer.l"
-+#line 607 "lexer.l"
- {
-
- int result;
-@@ -1979,13 +2036,13 @@ YY_RULE_SETUP
- YY_BREAK
- case 61:
- YY_RULE_SETUP
--#line 561 "lexer.l"
-+#line 618 "lexer.l"
- { yytext_to_buffer; }
- YY_BREAK
- case 62:
- /* rule 62 can match eol */
- YY_RULE_SETUP
--#line 564 "lexer.l"
-+#line 621 "lexer.l"
- {
- syntax_error("unterminated string");
- }
-@@ -1993,14 +2050,14 @@ YY_RULE_SETUP
- case 63:
- /* rule 63 can match eol */
- YY_RULE_SETUP
--#line 569 "lexer.l"
-+#line 626 "lexer.l"
- {
- syntax_error("illegal escape sequence");
- }
- YY_BREAK
- case 64:
- YY_RULE_SETUP
--#line 574 "lexer.l"
-+#line 631 "lexer.l"
- {
-
- if (yyextra->lex_buf_len > 0)
-@@ -2028,7 +2085,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 65:
- YY_RULE_SETUP
--#line 600 "lexer.l"
-+#line 657 "lexer.l"
- {
-
- lex_check_space_ok("/", yyextra->lex_buf_len, LEX_BUF_SIZE);
-@@ -2038,7 +2095,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 66:
- YY_RULE_SETUP
--#line 608 "lexer.l"
-+#line 665 "lexer.l"
- {
-
- lex_check_space_ok("\\.", yyextra->lex_buf_len, LEX_BUF_SIZE);
-@@ -2053,20 +2110,20 @@ YY_RULE_SETUP
- YY_BREAK
- case 67:
- YY_RULE_SETUP
--#line 621 "lexer.l"
-+#line 678 "lexer.l"
- { yytext_to_buffer; }
- YY_BREAK
- case 68:
- /* rule 68 can match eol */
- YY_RULE_SETUP
--#line 624 "lexer.l"
-+#line 681 "lexer.l"
- {
- syntax_error("unterminated regular expression");
- }
- YY_BREAK
- case 69:
- YY_RULE_SETUP
--#line 629 "lexer.l"
-+#line 686 "lexer.l"
- {
-
- yylval->sized_string = NULL;
-@@ -2077,7 +2134,7 @@ YY_RULE_SETUP
- YY_BREAK
- case 70:
- YY_RULE_SETUP
--#line 638 "lexer.l"
-+#line 695 "lexer.l"
- {
-
- yylval->sized_string = NULL;
-@@ -2089,7 +2146,7 @@ YY_RULE_SETUP
- case 71:
- /* rule 71 can match eol */
- YY_RULE_SETUP
--#line 647 "lexer.l"
-+#line 704 "lexer.l"
- {
- // Match hex-digits with whitespace or comments. The latter are stripped
- // out by hex_lexer.l
-@@ -2105,12 +2162,12 @@ YY_RULE_SETUP
- case 72:
- /* rule 72 can match eol */
- YY_RULE_SETUP
--#line 660 "lexer.l"
-+#line 717 "lexer.l"
- /* skip whitespace */
- YY_BREAK
- case 73:
- YY_RULE_SETUP
--#line 662 "lexer.l"
-+#line 719 "lexer.l"
- {
-
- if (yytext[0] >= 32 && yytext[0] < 127)
-@@ -2125,10 +2182,10 @@ YY_RULE_SETUP
- YY_BREAK
- case 74:
- YY_RULE_SETUP
--#line 674 "lexer.l"
-+#line 731 "lexer.l"
- ECHO;
- YY_BREAK
--#line 2131 "lexer.c"
-+#line 2188 "lexer.c"
-
- case YY_END_OF_BUFFER:
- {
-@@ -3277,7 +3334,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)
-
- #define YYTABLES_NAME "yytables"
-
--#line 674 "lexer.l"
-+#line 731 "lexer.l"
-
-
-
-@@ -3494,3 +3551,4 @@ int yr_lex_parse_rules_fd(
- return compiler->errors;
- }
-
-+
-diff --git a/libyara/lexer.l b/libyara/lexer.l
-index f2c8b9d..5f50d7f 100644
---- a/libyara/lexer.l
-+++ b/libyara/lexer.l
-@@ -116,6 +116,20 @@ with noyywrap then we can remove this pragma.
- #define snprintf _snprintf
- #endif
-
-+static int is_absolute_path(
-+ char* path)
-+{
-+ if (path == NULL)
-+ return FALSE;
-+
-+ #if defined(_WIN32) || defined(__CYGWIN__)
-+ return strlen(path) > 2 &&
-+ path[1] == ':' && (path[2] == '/' || path[2] == '\\');
-+ #else
-+ return strlen(path) > 0 && path[0] == '/';
-+ #endif
-+}
-+
- %}
-
- %option reentrant bison-bridge
-@@ -203,23 +217,66 @@ include[ \t]+\" {
-
- if (compiler->include_callback != NULL)
- {
-+ #ifdef _MSC_VER
-+ char* b = NULL;
-+ #endif
-+ char* s = NULL;
-+ char* f;
-+
-+ char buffer[1024];
- const char* included_rules;
- char* current_file_name;
-+ char* include_path;
-
- *yyextra->lex_buf_ptr = '\0'; // null-terminate included file path
-
-- // move path of current source file into buffer
- current_file_name = yr_compiler_get_current_file_name(compiler);
-
-+ if (current_file_name == NULL ||
-+ compiler->include_callback != _yr_compiler_default_include_callback ||
-+ is_absolute_path(yyextra->lex_buf))
-+ {
-+ include_path = yyextra->lex_buf;
-+ }
-+ else
-+ {
-+ strlcpy(buffer, current_file_name, sizeof(buffer));
-+ s = strrchr(buffer, '/');
-+
-+ #ifdef _MSC_VER
-+ b = strrchr(buffer, '\\'); // in Windows both path delimiters are accepted
-+ #endif
-+
-+ #ifdef _MSC_VER
-+ if (s != NULL || b != NULL)
-+ #else
-+ if (s != NULL)
-+ #endif
-+ {
-+ #ifdef _MSC_VER
-+ f = (b > s) ? (b + 1) : (s + 1);
-+ #else
-+ f = s + 1;
-+ #endif
-+
-+ strlcpy(f, yyextra->lex_buf, sizeof(buffer) - (f - buffer));
-+ include_path = buffer;
-+ }
-+ else
-+ {
-+ include_path = yyextra->lex_buf;
-+ }
-+ }
-+
- included_rules = compiler->include_callback(
-- yyextra->lex_buf,
-+ include_path,
- current_file_name,
- compiler->current_namespace->name,
- compiler->incl_clbk_user_data);
-
- if (included_rules != NULL)
- {
-- int error_code = _yr_compiler_push_file_name(compiler, yyextra->lex_buf);
-+ int error_code = _yr_compiler_push_file_name(compiler, include_path);
-
- if (error_code != ERROR_SUCCESS)
- {
-@@ -886,3 +943,4 @@ int yr_lex_parse_rules_fd(
-
- return compiler->errors;
- }
-+
-diff --git a/tests/data/baz.yar b/tests/data/baz.yar
-new file mode 100644
-index 0000000..25a89aa
---- /dev/null
-+++ b/tests/data/baz.yar
-@@ -0,0 +1 @@
-+rule baz { condition: true }
-diff --git a/tests/data/foo.yar b/tests/data/foo.yar
-new file mode 100644
-index 0000000..507213c
---- /dev/null
-+++ b/tests/data/foo.yar
-@@ -0,0 +1,3 @@
-+include "include/bar.yar"
-+
-+rule foo { condition: bar }
-diff --git a/tests/data/include/bar.yar b/tests/data/include/bar.yar
-new file mode 100644
-index 0000000..b5db2ab
---- /dev/null
-+++ b/tests/data/include/bar.yar
-@@ -0,0 +1,3 @@
-+include "../baz.yar"
-+
-+rule bar { condition: baz }
-diff --git a/tests/data/true.yar b/tests/data/true.yar
-deleted file mode 100644
-index 55d91be..0000000
---- a/tests/data/true.yar
-+++ /dev/null
-@@ -1 +0,0 @@
--rule test { condition: true }
-diff --git a/tests/test-api.c b/tests/test-api.c
-index 3f18675..80de2c3 100644
---- a/tests/test-api.c
-+++ b/tests/test-api.c
-@@ -105,14 +105,14 @@ void test_file_descriptor()
- YR_RULES* rules = NULL;
-
- #if defined(_WIN32) || defined(__CYGWIN__)
-- HANDLE fd = CreateFile("tests/data/true.yar", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
-+ HANDLE fd = CreateFile("tests/data/baz.yar", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
- if (fd == INVALID_HANDLE_VALUE)
- {
- fputs("CreateFile failed", stderr);
- exit(1);
- }
- #else
-- int fd = open("tests/data/true.yar", O_RDONLY);
-+ int fd = open("tests/data/baz.yar", O_RDONLY);
- if (fd < 0)
- {
- perror("open");
-diff --git a/tests/test-rules.c b/tests/test-rules.c
-index 6d0a7e3..99c7e1c 100644
---- a/tests/test-rules.c
-+++ b/tests/test-rules.c
-@@ -1737,7 +1737,11 @@ void test_integer_functions()
- void test_include_files()
- {
- assert_true_rule(
-- "include \"tests/data/true.yar\" rule t { condition: test }",
-+ "include \"tests/data/baz.yar\" rule t { condition: baz }",
-+ NULL);
-+
-+ assert_true_rule(
-+ "include \"tests/data/foo.yar\" rule t { condition: foo }",
- NULL);
- }
-
diff --git a/debian/patches/series b/debian/patches/series
index f570648..ee94629 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1 @@
0001-Use-Linux-style-procfs-on-kFreeBSD-because-struct-pt.patch
-0002-Fix-issue-796.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/forensics/yara.git
More information about the forensics-changes
mailing list