std::string parseparam()
{
    std::string paramstr;
    validate_token(tokval == "(", "(");
    while (tokval != ")" && !eof) {
        paramstr = paramstr + tokval;
        parsenext();
    }
    validate_token(tokval == ")", ")");
    validate_token(tokval == "{", "{");
    return paramstr;
}
Example #2
0
static gboolean
parse_cookie_pair (const gchar *header_value,
                   gchar **out_cookie_name,
                   gchar **out_cookie_value,
                   GError **error)
{
  gboolean ret = FALSE;
  const gchar *equals;
  const gchar *cookie_raw;
  gs_free gchar *ret_cookie_name = NULL;
  gs_free gchar *ret_cookie_value = NULL;

  equals = strchr (header_value, '=');
  if (!equals)
    {
      g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
                   "Invalid cookie; missing '='");
      goto out;
    }
  ret_cookie_name = g_strndup (header_value, equals - header_value);

  if (!validate_token (ret_cookie_name, error))
    goto out;

  cookie_raw = equals + 1;
  ret_cookie_value = g_uri_unescape_segment (cookie_raw, NULL, NULL);

  ret = TRUE;
  *out_cookie_name = ret_cookie_name;
  ret_cookie_name = NULL;
  *out_cookie_value = ret_cookie_value;
  ret_cookie_value = NULL;
out:
  return ret;
}
Example #3
0
void storm::ExtendFileLifeTimeInSpaceRequest::load(ns1__srmExtendFileLifeTimeInSpaceRequest* request)
{
	if (request->spaceToken == NULL) {
		throw storm::invalid_request("targetSpaceToken is NULL");
	}

	m_spaceToken = std::string(request->spaceToken);
	validate_token(m_spaceToken);

	if (request->arrayOfSURLs != NULL && request->arrayOfSURLs->__sizeurlArray > 0 && request->arrayOfSURLs->urlArray != NULL) {
		for (int i = 0; i < request->arrayOfSURLs->__sizeurlArray; ++i) {
			m_surls.insert(storm::normalize_surl(std::string(request->arrayOfSURLs->urlArray[i])));
		}
	}
	if (request->newLifeTime != NULL) {
		m_newLifeTime = *(request->newLifeTime);
	}
}
int
main(int argc, char* argv[]) {
    int retcode = 1;
    
    /* Usage */
    if (argc < 4) {
        printf("Usage: %s openam_url username token\n", argv[0]);
        exit(1);
    }

    retcode = validate_token(argv[1], argv[2], argv[3]);
    if(retcode == 0) {
        printf("OK\n");
    } else {
        printf("KO\n");
    }
        
    return retcode;
}
void parse_lib(std::string filename)
{
    int inpfile = open(filename.c_str(), O_RDONLY);
    if (inpfile == -1) {
        printf("[%s:%d] unable to open '%s'\n", __FUNCTION__, __LINE__, filename.c_str());
        exit(-1);
    }
    int len = read(inpfile, buffer, sizeof(buffer));
    if (len >= sizeof(buffer) - 1) {
        printf("[%s:%d] incomplete read of '%s'\n", __FUNCTION__, __LINE__, filename.c_str());
        exit(-1);
    }
    parsenext();
    if (tokval != "library") {
        printf("[%s:%d] 'library' keyword not found\n", __FUNCTION__, __LINE__);
        exit(-1);
    }
    validate_token(isId(tokval[0]), "name");
    parseparam();
    parse_item(false, "", nullptr);
}
Example #6
0
void storm::PurgeFromSpaceRequest::load(ns1__srmPurgeFromSpaceRequest* request)
{
	if (request->spaceToken == NULL) {
		throw storm::invalid_request("targetSpaceToken is NULL");
	}
	if (request->arrayOfSURLs == NULL || request->arrayOfSURLs->__sizeurlArray == 0 || request->arrayOfSURLs->urlArray == NULL) {
		throw storm::invalid_request("SURLs array is NULL");
	}

	m_spaceToken = std::string(request->spaceToken);
	validate_token(m_spaceToken);

	for (int i = 0; i < request->arrayOfSURLs->__sizeurlArray; ++i) {
		m_surls.insert(storm::normalize_surl(std::string(request->arrayOfSURLs->urlArray[i])));
	}
	if(request->storageSystemInfo != NULL && request->storageSystemInfo->__sizeextraInfoArray > 0 && request->storageSystemInfo->extraInfoArray != NULL)
	{
		for(int i = 0; i < request->storageSystemInfo->__sizeextraInfoArray; ++i)
		{
			m_extraInfo.insert(std::make_pair(request->storageSystemInfo->extraInfoArray[i]->key,
					request->storageSystemInfo->extraInfoArray[i]->value));
		}
	}
}
void parse_item(bool capture, std::string pinName, AttributeList *attr)
{
    while (tokval != "}" && !eof) {
        std::string paramname = tokval;
        validate_token(isId(tokval[0]), "name");
        if (paramname == "default_intrinsic_fall" || paramname == "default_intrinsic_rise") {
            validate_token(tokval == ":", ":(paramname)");
            if (capture)
                addAttr(attr, pinName, paramname, tokval);
            validate_token(isdigit(tokval[0]), "number");
        }
        else if (paramname == "bus_type") {
            validate_token(tokval == ":", ":(bus_type)");
            if (capture)
                addAttr(attr, pinName, paramname, tokval);
            validate_token(isId(tokval[0]), "name");
        }
        else if (tokval == "(") {
            while (tokval == "(") {
                std::string paramstr = parseparam();
                bool cell = paramname == "cell" && paramstr == options.cell;
                int ind = paramstr.find("[");
                if (capture && (paramname == "pin" || paramname == "bus")) {
                    if (ind > 0 && paramstr[paramstr.length()-1] == ']') {
                        std::string sub = paramstr.substr(ind+1);
                        sub = sub.substr(0, sub.length()-1);
                        paramstr = paramstr.substr(0, ind);
                        capturePins[paramstr].pins[atol(sub.c_str())] = 1;
                    }
                    parse_item(true, paramstr, &capturePins[paramstr].attr);
                }
                else if (paramname == "type") {
                    parse_item(true, "", &busInfo[paramstr].attr);
                }
                else
                    parse_item(capture || cell, pinName, attr);
//if (paramname == "cell")
//printf("[%s:%d] paramname %s paramstr %s \n", __FUNCTION__, __LINE__, paramname.c_str(), paramstr.c_str());
                if (cell) {
                    processCell();
                    return;
                }
                paramname = tokval;
                if (!isId(tokval[0]))
                    break;
                parsenext();
            }
        }
        else {
            validate_token(tokval == ":", ":(other)");
            if (capture && paramname != "timing_type")
                addAttr(attr, pinName, paramname, tokval);
            if (isdigit(tokval[0]) || isId(tokval[0]) || tokval[0] == '"')
                parsenext();
            else
                validate_token(false, "number or name or string");
            if (tokval != "}")
                validate_token(tokval == ";", ";");
        }
    }
    validate_token(tokval == "}", "}");
}
int main(int argc, char **argv)
{
  bool non_batch = false;
  bool batch = false;
  bool employee = false;
  bool guest = false;
  bool arrival = false;
  bool departure = false;
  int32_t timestamp = -1;
  const char *token = NULL;
  const char *name = NULL;
  int32_t room = -1;
  const char *filename = NULL;
  struct log_entry l;

  int opt;
  static const char *optstr = "T:K:E:G:ALR:B";
  opterr = 0;

  while((opt = getopt(argc, argv, optstr)) != -1) {
    switch(opt) {
      case 'T':
        non_batch = true;
        if (!parse_num(optarg, &timestamp)) invalid(true);
        if (!validate_int_range(timestamp, TIMESTAMP_MIN, TIMESTAMP_MAX))
          invalid(true);
        break;
      case 'K':
        non_batch = true;
        token = optarg;
        if (!validate_token(token)) invalid(true);
        break;
      case 'E':
        non_batch = true;
        if (guest) invalid(true);
        employee = true;
        name = optarg;
        if (!validate_name(name)) invalid(true);
        break;
      case 'G':
        non_batch = true;
        if (employee) invalid(true);
        guest = true;
        name = optarg;
        if (!validate_name(name)) invalid(true);
        break;
      case 'A':
        non_batch = true;
        if (departure) invalid(true);
        arrival = true;
        break;
      case 'L':
        non_batch = true;
        if (arrival) invalid(true);
        departure = true;
        break;
      case 'R':
        non_batch = true;
        if (!parse_num(optarg, &room)) invalid(true);
        if (!validate_int_range(room, ROOM_MIN, ROOM_MAX)) invalid(true);
        break;
      case 'B':
        if (non_batch) invalid(true);
        batch = true;
        break;
      default:
        invalid(true);
        break;
    }
  }

  if (optind >= argc) invalid(true);
  else filename = argv[optind];
  if (filename && !validate_filename(filename)) invalid(true);

  if (batch && non_batch) invalid(true);

  if (batch) {
    batch_mode(filename);
  } else {
    int ret;
    if (!timestamp || !token || !(employee || guest) || !(arrival || departure))
      invalid(true);
    if (employee && guest) invalid(true);
    l.timestamp = (uint32_t) timestamp;
    l.room = room;
    l.action = arrival ? ARRIVAL : DEPARTURE;
    l.type = guest ? GUEST : EMPLOYEE;
    l.name = strdup(name);
    ret = append_log_entry(&l, filename, token);
    free((void *)l.name); l.name = NULL;
    if (ret != CAPSTONE_EXIT_SUCCESS) {
      invalid(true);
    }
  }
  exit(CAPSTONE_EXIT_SUCCESS);
}