Example #1
0
uint8_t parse_expect(ParseState* ps, token_t tok)
{
	if (parse_accept(ps, tok))
		return 1;
	ps->error = ERR_SYNTAX;
	return 0;
}
Example #2
0
/*
 * Parse all header fields that will be needed
 * to handle a SUBSCRIBE request
 */
static int parse_hfs(struct sip_msg* _m, int accept_header_required)
{
	if ( (parse_headers(_m, HDR_FROM | HDR_EVENT | HDR_EXPIRES | HDR_ACCEPT, 0)
				== -1) || (_m->from==0)||(_m->event==0)||(_m->expires==0) ||
			(_m->accept==0) ) {
		paerrno = PA_PARSE_ERR;
		LOG(L_ERR, "parse_hfs(): Error while parsing headers\n");
		return -1;
	}

	if (parse_from_header(_m) < 0) {
		paerrno = PA_FROM_ERR;
		LOG(L_ERR, "parse_hfs(): From malformed or missing\n");
		return -6;
	}

	if (_m->event) {
		if (parse_event(_m->event) < 0) {
			paerrno = PA_EVENT_PARSE;
			LOG(L_ERR, "parse_hfs(): Error while parsing Event header field\n");
			return -8;
		}
	}

	if (_m->expires) {
		if (parse_expires(_m->expires) < 0) {
			paerrno = PA_EXPIRES_PARSE;
			LOG(L_ERR, "parse_hfs(): Error while parsing Expires header field\n");
			return -9;
		}
	}

	if (_m->accept) {
		if (parse_accept(_m->accept, &acc) < 0) {
			paerrno = PA_ACCEPT_PARSE;
			LOG(L_ERR, "parse_hfs(): Error while parsing Accept header field\n");
			return -10;
		}
	} else if (accept_header_required) {
		LOG(L_ERR, "no accept header\n");
		acc = DOC_XPIDF;
	}

	return 0;
}
Example #3
0
/*
 * -l <length> / --length <length> / --length=<length>
 * -a string/@func / --accept string/@func / --accept=string/@func
 * -e string/@func / --exclude string/@func / --exclude=string/@func
 * -h / --help
 * -v / --version
 *
 * Examples:
 *   ./pwdgen -l 8 --accept @isgraph --exclude=xyz
 */
int main(int argc, char *argv[])
{
	int i;
	const char *param;

	for (i = 1; i < argc; ++i) {
		if (arg_is_length_no_param(argv[i])) {
			++i;

			if (i == argc) {
				error_length_no_param(argv[i - 1]);
			}

			param = argv[i];
			parse_length(param);
		} else if (arg_is_length_param(argv[i])) {
			if (argv[i][strlen(arg_length_param)] == '\0') {
				error_length_no_param(argv[i]);
			}

			param = &argv[i][strlen(arg_length_param)];
			parse_length(param);
		} else if (arg_is_accept_no_param(argv[i])) {
			++i;

			if (i == argc) {
				error_accept_no_param(argv[i - 1]);
			}

			param = argv[i];
			parse_accept(param);
		} else if (arg_is_accept_param(argv[i])) {
			if (argv[i][strlen(arg_accept_param)] == '\0') {
				error_accept_no_param(argv[i]);
			}

			param = &argv[i][strlen(arg_accept_param)];
			parse_accept(param);
		} else if (arg_is_exclude_no_param(argv[i])) {
			++i;

			if (i == argc) {
				error_exclude_no_param(argv[i - 1]);
			}

			param = argv[i];
			parse_exclude(param);
		} else if (arg_is_exclude_param(argv[i])) {
			if (argv[i][strlen(arg_exclude_param)] == '\0') {
				error_exclude_no_param(argv[i]);
			}

			param = &argv[i][strlen(arg_exclude_param)];
			parse_exclude(param);
		} else {
			error_invalid_arg(argv[i]);
		}
	}

	if (n_accept_funcs == 0 && n_exclude_funcs == 0
	    && n_accept_chars == 0 && n_exclude_chars == 0) {
		parse_accept("@isgraph");
	}

	rndfd = open("/dev/urandom", O_RDONLY);

	if (rndfd == -1) {
		perror("/dev/urandom");
		exit(EXIT_FAILURE);
	}

	pwdgen_main();
	close(rndfd);

	return 0;
}