Jan Breuer
2015-11-13 d1aa0fff8042820894e0efb3988b18d5c2ef3bbe
Resolve #65: Infinite loop with non ASCII character
3个文件已修改
14 ■■■■ 已修改文件
libscpi/src/lexer.c 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libscpi/test/test_lexer_parser.c 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libscpi/test/test_parser.c 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
libscpi/src/lexer.c
@@ -642,6 +642,8 @@
                state->pos--;
                break;
            }
        } else {
            break;
        }
    }
}
libscpi/test/test_lexer_parser.c
@@ -205,6 +205,8 @@
    TEST_TOKEN("'ah\"oj' ", scpiParser_parseProgramData, 0, 7, SCPI_TOKEN_SINGLE_QUOTE_PROGRAM_DATA);
    TEST_TOKEN("\"ah\"\"oj\" ", scpiParser_parseProgramData, 0, 8, SCPI_TOKEN_DOUBLE_QUOTE_PROGRAM_DATA);
    TEST_TOKEN("\"\"", scpiParser_parseProgramData, 0, 2, SCPI_TOKEN_DOUBLE_QUOTE_PROGRAM_DATA);
    TEST_TOKEN("'test\r\n' ", scpiParser_parseProgramData, 0, 8, SCPI_TOKEN_SINGLE_QUOTE_PROGRAM_DATA);
    TEST_TOKEN("'\xFA\xF0' ", scpiParser_parseProgramData, 0, 0, SCPI_TOKEN_UNKNOWN);
    TEST_TOKEN("abc_213as564 , ", scpiLex_CharacterProgramData, 0, 12, SCPI_TOKEN_PROGRAM_MNEMONIC);
libscpi/test/test_parser.c
@@ -233,6 +233,10 @@
    TEST_INPUT("TEST:TREEA?;:TEXT? \"PARAM1\", \"PARAM2\"\r\n", "10;\"PARAM2\"\r\n");
    output_buffer_clear();
    /* Test special characters in parameters */
    TEST_INPUT("TEXT? \"\", \"test\r\n\"\r\n", "\"test\r\n\"\r\n");
    output_buffer_clear();
    CU_ASSERT_EQUAL(err_buffer_pos, 0);
    error_buffer_clear();
}
@@ -256,9 +260,9 @@
    TEST_ERROR("*IDN? 12\r\n", "MA,IN,0,VER\r\n", FALSE, SCPI_ERROR_PARAMETER_NOT_ALLOWED);
    TEST_ERROR("TEXT? \"PARAM1\", \"PARAM2\"\r\n", "\"PARAM2\"\r\n", TRUE, 0);
    TEST_ERROR("ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ"
               "ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ"
               "ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ",
               "", FALSE, SCPI_ERROR_INPUT_BUFFER_OVERRUN);
            "ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ"
            "ABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJABCDEFGHIJ",
            "", FALSE, SCPI_ERROR_INPUT_BUFFER_OVERRUN);
    // TODO: SCPI_ERROR_INVALID_SEPARATOR
    // TODO: SCPI_ERROR_INVALID_SUFFIX