void test_lagopus_str_escape_null(void) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; char *str = NULL; bool is_escaped = false; char test_str[] = "hoge\"foo'bar"; ret = lagopus_str_escape((const char *) NULL, "\"'", &is_escaped, &str); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "lagopus_str_escap error (null)."); ret = lagopus_str_escape(test_str, (const char *) NULL, &is_escaped, &str); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "lagopus_str_escap error (null)."); ret = lagopus_str_escape(test_str, "\"'", &is_escaped, NULL); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_INVALID_ARGS, ret, "lagopus_str_escap error (null)."); }
void test_lagopus_str_escape_03(void) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; char *str = NULL; char test_str[] = "hoge\"foo'bar"; char test_ret_str[] = "hoge\\\"foo\\\'bar"; ret = lagopus_str_escape(test_str, "\"'", NULL, &str); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_str_escap error."); TEST_STR(ret, str, test_ret_str); }
void test_lagopus_str_escape_02(void) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; bool is_escaped = false; char *str = NULL; char test_str[] = "hogefoobar"; char test_ret_str[] = "hogefoobar"; ret = lagopus_str_escape(test_str, "\"'", &is_escaped, &str); TEST_ASSERT_EQUAL_MESSAGE(LAGOPUS_RESULT_OK, ret, "lagopus_str_escap error."); TEST_STR(ret, str, test_ret_str); TEST_ASSERT_EQUAL_MESSAGE(false, is_escaped, "is_escaped error."); }
lagopus_result_t datastore_cmd_serialize(lagopus_dstring_t *result) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; /* addr */ char *addr_str = NULL; char *escaped_addr_str = NULL; /* protocol */ const char *protocol_str = NULL; char *escaped_protocol_str = NULL; /* tls */ const char *tls_str = NULL; bool is_escaped = false; if (result != NULL) { /* cmmand name. */ if ((ret = lagopus_dstring_appendf(result, DATASTORE_CMD_NAME)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } /* addr opt. */ if ((ret = lagopus_ip_address_str_get(s_bindaddr, &addr_str)) == LAGOPUS_RESULT_OK) { if (IS_VALID_STRING(addr_str) == true) { if ((ret = lagopus_str_escape(addr_str, "\"", &is_escaped, &escaped_addr_str)) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf(result, " -addr")) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf( result, ESCAPE_NAME_FMT(is_escaped, escaped_addr_str), escaped_addr_str)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } } } else { lagopus_perror(ret); goto done; } /* port opt. */ if ((ret = lagopus_dstring_appendf(result, " -port")) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf(result, " %d", s_port)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } /* protocol opt. */ if (session_type_is_tcp(s_protocol) == true) { protocol_str = "tcp"; } else if (session_type_is_tcp6(s_protocol) == true) { protocol_str = "tcp6"; } else { lagopus_perror(LAGOPUS_RESULT_ANY_FAILURES); goto done; } if (IS_VALID_STRING(protocol_str) == true) { if ((ret = lagopus_str_escape(protocol_str, "\"", &is_escaped, &escaped_protocol_str)) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf(result, " -protocol")) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf( result, ESCAPE_NAME_FMT(is_escaped, escaped_protocol_str), escaped_protocol_str)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } } /* tls opt. */ if ((ret = lagopus_dstring_appendf(result, " -tls")) == LAGOPUS_RESULT_OK) { if (s_tls == true) { tls_str = "true"; } else { tls_str = "false"; } if ((ret = lagopus_dstring_appendf(result, " %s", tls_str)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } /* Add newline. */ if ((ret = lagopus_dstring_appendf(result, "\n\n")) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } done: free(addr_str); free(escaped_addr_str); free(escaped_protocol_str); } else { ret = LAGOPUS_RESULT_INVALID_ARGS; } return ret; }
lagopus_result_t snmp_cmd_serialize(lagopus_dstring_t *result) { lagopus_result_t ret = LAGOPUS_RESULT_ANY_FAILURES; /* master-agentx-socket */ char *master_agentx_socket_str = NULL; char *escaped_master_agentx_socket_str = NULL; /* ping-interval-second */ uint16_t ping_interval_second = 0; bool is_escaped = false; if (result != NULL) { /* cmmand name. */ if ((ret = lagopus_dstring_appendf(result, SNMP_CMD_NAME)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } /* master-agentx-socket opt. */ if ((ret = lagopus_snmp_get_agentx_sock(&master_agentx_socket_str)) == LAGOPUS_RESULT_OK) { if (IS_VALID_STRING(master_agentx_socket_str) == true) { if ((ret = lagopus_str_escape(master_agentx_socket_str, "\"", &is_escaped, &escaped_master_agentx_socket_str)) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf(result, " -master-agentx-socket")) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf( result, ESCAPE_NAME_FMT(is_escaped, escaped_master_agentx_socket_str), escaped_master_agentx_socket_str)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } } } else { lagopus_perror(ret); goto done; } /* ping-interval-second opt. */ if ((ret = lagopus_snmp_get_ping_interval(&ping_interval_second)) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf(result, " -ping-interval-second")) == LAGOPUS_RESULT_OK) { if ((ret = lagopus_dstring_appendf(result, " %d", ping_interval_second)) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } } else { lagopus_perror(ret); goto done; } /* Add newline. */ if ((ret = lagopus_dstring_appendf(result, "\n\n")) != LAGOPUS_RESULT_OK) { lagopus_perror(ret); goto done; } done: free((void *) master_agentx_socket_str); free((void *) escaped_master_agentx_socket_str); } else { ret = LAGOPUS_RESULT_INVALID_ARGS; } return ret; }