std::string parseparam() { std::string paramstr; validate_token(tokval == "(", "("); while (tokval != ")" && !eof) { paramstr = paramstr + tokval; parsenext(); } validate_token(tokval == ")", ")"); validate_token(tokval == "{", "{"); return paramstr; }
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; }
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); }
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, ×tamp)) 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); }