示例#1
0
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).");
}
示例#2
0
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);
}
示例#3
0
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.");
}
示例#4
0
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;
}
示例#5
0
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;
}