From: Magnus Määttä <magnus@php.net>
Date: Wed, 8 Jul 2015 22:04:13 +0000 (+0200)
Subject: Fix posix_setrlimit() to use int as values instead of strings.
X-Git-Tag: php-7.1.1RC1~35^2~55
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a55ca9a8d14d16708c0627c05e117b26d2aaef86;p=php

Fix posix_setrlimit() to use int as values instead of strings.
Add constant for unlimited (POSIX_RLIMIT_INFINITY).
---

diff --git a/ext/posix/posix.c b/ext/posix/posix.c
index ec28121bcb..6d34da7609 100644
--- a/ext/posix/posix.c
+++ b/ext/posix/posix.c
@@ -402,6 +402,9 @@ static PHP_MINIT_FUNCTION(posix)
 #endif
 #ifdef RLIMIT_STACK
 	REGISTER_LONG_CONSTANT("POSIX_RLIMIT_STACK", RLIMIT_STACK, CONST_CS | CONST_PERSISTENT);
+#endif
+#ifdef HAVE_SETRLIMIT
+	REGISTER_LONG_CONSTANT("POSIX_RLIMIT_INFINITY", RLIM_INFINITY, CONST_CS | CONST_PERSISTENT);
 #endif
 	return SUCCESS;
 }
@@ -1381,30 +1384,20 @@ PHP_FUNCTION(posix_getrlimit)
 #endif /* HAVE_GETRLIMIT */
 
 #ifdef HAVE_SETRLIMIT
-/* {{{ proto bool posix_setrlimit(int resource, string softlimit, string hardlimit)
+/* {{{ proto bool posix_setrlimit(int resource, int softlimit, int hardlimit)
    Set system resource consumption limits (POSIX.1-2001) */
 PHP_FUNCTION(posix_setrlimit)
 {
 	struct rlimit rl;
-	char *cur, *max;
-	size_t cur_len, max_len;
+	zend_long cur, max;
 	int res;
 
-	if (zend_parse_parameters(ZEND_NUM_ARGS(), "lss", &res, &cur, &cur_len, &max, &max_len) == FAILURE) {
+	if (zend_parse_parameters(ZEND_NUM_ARGS(), "lll", &res, &cur, &max) == FAILURE) {
 		RETURN_FALSE;
 	}
 
-	if (!strcasecmp(cur, "unlimited")) {
-		rl.rlim_cur = RLIM_INFINITY;
-	} else {
-		rl.rlim_cur = zend_atol(cur, cur_len);
-	}
-
-	if (!strcasecmp(max, "unlimited")) {
-		rl.rlim_max = RLIM_INFINITY;
-	} else {
-		rl.rlim_max = zend_atol(max, max_len);
-	}
+	rl.rlim_cur = cur;
+	rl.rlim_max = max;
 
 	if (setrlimit(res, &rl) == -1) {
 		POSIX_G(last_error) = errno;