Exemplo n.º 1
0
static void
test_linux_audit_scanner_audit_style_hex_dump_is_decoded(void)
{
  /* not decoded as no characters to be escaped, kernel only escapes stuff below 0x21, above 0x7e and the quote character */
  kv_scanner_input(kv_scanner, "proctitle=41607E");
  assert_next_kv_is("proctitle", "41607E");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "proctitle=412042");
  assert_next_kv_is("proctitle", "A B");
  assert_no_more_tokens();

  /* odd number of chars, not decoded */
  kv_scanner_input(kv_scanner, "proctitle=41204");
  assert_next_kv_is("proctitle", "41204");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "proctitle=C3A17276C3AD7A74C5B172C59174C3BC6BC3B67266C3BA72C3B367C3A970");
  assert_next_kv_is("proctitle", "árvíztűrőtükörfúrógép");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "proctitle=2F62696E2F7368002D65002F6574632F696E69742E642F706F737466697800737461747573");
  assert_next_kv_is("proctitle", "/bin/sh\t-e\t/etc/init.d/postfix\tstatus");
  assert_no_more_tokens();
}
Exemplo n.º 2
0
static void
test_kv_scanner_with_comma_separated_values(void)
{
  kv_scanner_input(kv_scanner, "key1=value1, key2=value2, key3=value3");
  assert_next_kv_is("key1", "value1");
  assert_next_kv_is("key2", "value2");
  assert_next_kv_is("key3", "value3");
  assert_no_more_tokens();
}
Exemplo n.º 3
0
static void
test_kv_scanner_spaces_between_values_are_ignored(void)
{
  kv_scanner_input(kv_scanner, "key1=value1    key2=value2     key3=value3 ");
  assert_next_kv_is("key1", "value1");
  assert_next_kv_is("key2", "value2");
  assert_next_kv_is("key3", "value3");
  assert_no_more_tokens();
}
Exemplo n.º 4
0
static void
test_kv_scanner_with_multiple_key_values_return_multiple_pairs(void)
{
  kv_scanner_input(kv_scanner, "key1=value1 key2=value2 key3=value3 ");
  assert_next_kv_is("key1", "value1");
  assert_next_kv_is("key2", "value2");
  assert_next_kv_is("key3", "value3");
  assert_no_more_tokens();
}
Exemplo n.º 5
0
static void
test_kv_scanner_stray_words_are_ignored(void)
{
  kv_scanner_input(kv_scanner, "lorem ipsum foo=bar");
  assert_next_kv_is("foo", "bar");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "foo=bar lorem ipsum key=value some more values");
  assert_next_kv_is("foo", "bar");
  assert_next_kv_is("key", "value");
  assert_no_more_tokens();
}
Exemplo n.º 6
0
static void
test_kv_scanner_quotation_is_stored_in_the_was_quoted_value_member(void)
{
  kv_scanner_input(kv_scanner, "foo=\"bar\"");
  assert_next_kv_is("foo", "bar");
  assert_true(kv_scanner->value_was_quoted, "expected value_was_quoted to be TRUE");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "foo=bar");
  assert_next_kv_is("foo", "bar");
  assert_false(kv_scanner->value_was_quoted, "expected value_was_quoted to be FALSE");
  assert_no_more_tokens();
}
Exemplo n.º 7
0
static void
test_kv_scanner_transforms_values_if_parse_value_is_set(void)
{
  kv_scanner->parse_value = _parse_value_by_incrementing_all_bytes;
  kv_scanner_input(kv_scanner, "foo=\"bar\"");
  assert_next_kv_is("foo", "cbs");
  assert_no_more_tokens();
}
Exemplo n.º 8
0
static void
test_kv_scanner_name_equals_value_returns_a_pair(void)
{
  kv_scanner_input(kv_scanner, "foo=");
  assert_next_kv_is("foo", "");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "foo=b");
  assert_next_kv_is("foo", "b");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "foo=bar");
  assert_next_kv_is("foo", "bar");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "foo=barbar ");
  assert_next_kv_is("foo", "barbar");
  assert_no_more_tokens();
}
Exemplo n.º 9
0
static void
test_kv_scanner_quoted_values_are_unquoted_like_c_strings(void)
{
  kv_scanner_input(kv_scanner, "foo=\"bar\"");
  assert_next_kv_is("foo", "bar");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "key1=\"value1\", key2=\"value2\"");
  assert_next_kv_is("key1", "value1");
  assert_next_kv_is("key2", "value2");
  assert_no_more_tokens();

  /* embedded quote */
  kv_scanner_input(kv_scanner, "key1=\"\\\"value1\"");
  assert_next_kv_is("key1", "\"value1");
  assert_no_more_tokens();

  /* control sequences */
  kv_scanner_input(kv_scanner, "key1=\"\\b \\f \\n \\r \\t \\\\\"");
  assert_next_kv_is("key1", "\b \f \n \r \t \\");
  assert_no_more_tokens();

  /* unknown backslash escape is left as is */
  kv_scanner_input(kv_scanner, "key1=\"\\p\"");
  assert_next_kv_is("key1", "\\p");
  assert_no_more_tokens();

  kv_scanner_input(kv_scanner, "key1='value1', key2='value2'");
  assert_next_kv_is("key1", "value1");
  assert_next_kv_is("key2", "value2");
  assert_no_more_tokens();

  /* embedded quote */
  kv_scanner_input(kv_scanner, "key1='\\'value1'");
  assert_next_kv_is("key1", "'value1");
  assert_no_more_tokens();

  /* control sequences */
  kv_scanner_input(kv_scanner, "key1='\\b \\f \\n \\r \\t \\\\'");
  assert_next_kv_is("key1", "\b \f \n \r \t \\");
  assert_no_more_tokens();

  /* unknown backslash escape is left as is */
  kv_scanner_input(kv_scanner, "key1='\\p'");
  assert_next_kv_is("key1", "\\p");
  assert_no_more_tokens();
}