Skip to content

Commit 5ae81ec

Browse files
committed
fix uuencode
1 parent 8f7abf4 commit 5ae81ec

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

ext/standard/php_uuencode.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
PHP_FUNCTION(convert_uudecode);
2525
PHP_FUNCTION(convert_uuencode);
2626

27-
PHPAPI int php_uudecode(char *src, int src_len, char **dest);
28-
PHPAPI int php_uuencode(char *src, int src_len, char **dest);
27+
PHPAPI zend_str_size_int php_uudecode(char *src, zend_str_size_int src_len, char **dest, int *error);
28+
PHPAPI zend_str_size_int php_uuencode(char *src, zend_str_size_int src_len, char **dest);
2929

3030
#endif /* PHP_UUENCODE_H */
3131

ext/standard/uuencode.c

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@
6565

6666
#define PHP_UU_DEC(c) (((c) - ' ') & 077)
6767

68-
PHPAPI int php_uuencode(char *src, int src_len, char **dest) /* {{{ */
68+
PHPAPI zend_str_size_int php_uuencode(char *src, zend_str_size_int src_len, char **dest) /* {{{ */
6969
{
70-
int len = 45;
70+
zend_str_size_int len = 45;
7171
char *p, *s, *e, *ee;
7272

7373
/* encoded length is ~ 38% greater than the original */
@@ -124,11 +124,12 @@ PHPAPI int php_uuencode(char *src, int src_len, char **dest) /* {{{ */
124124
}
125125
/* }}} */
126126

127-
PHPAPI int php_uudecode(char *src, int src_len, char **dest) /* {{{ */
127+
PHPAPI zend_str_size_int php_uudecode(char *src, zend_str_size_int src_len, char **dest, int *error) /* {{{ */
128128
{
129-
int len, total_len=0;
129+
zend_str_size_int len, total_len=0;
130130
char *s, *e, *p, *ee;
131131

132+
*error = 0;
132133
p = *dest = safe_emalloc((size_t) ceil(src_len * 0.75), 1, 1);
133134
s = src;
134135
e = src + src_len;
@@ -181,7 +182,8 @@ PHPAPI int php_uudecode(char *src, int src_len, char **dest) /* {{{ */
181182

182183
err:
183184
efree(*dest);
184-
return -1;
185+
*error = 1;
186+
return 0;
185187
}
186188
/* }}} */
187189

@@ -190,9 +192,9 @@ PHPAPI int php_uudecode(char *src, int src_len, char **dest) /* {{{ */
190192
PHP_FUNCTION(convert_uuencode)
191193
{
192194
char *src, *dst;
193-
int src_len, dst_len;
195+
zend_str_size_int src_len, dst_len;
194196

195-
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &src, &src_len) == FAILURE || src_len < 1) {
197+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &src, &src_len) == FAILURE || src_len < 1) {
196198
RETURN_FALSE;
197199
}
198200

@@ -207,14 +209,15 @@ PHP_FUNCTION(convert_uuencode)
207209
PHP_FUNCTION(convert_uudecode)
208210
{
209211
char *src, *dst;
210-
int src_len, dst_len;
212+
zend_str_size_int src_len, dst_len;
213+
int err = 0;;
211214

212-
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &src, &src_len) == FAILURE || src_len < 1) {
215+
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &src, &src_len) == FAILURE || src_len < 1) {
213216
RETURN_FALSE;
214217
}
215218

216-
dst_len = php_uudecode(src, src_len, &dst);
217-
if (dst_len < 0) {
219+
dst_len = php_uudecode(src, src_len, &dst, &err);
220+
if (err) {
218221
php_error_docref(NULL TSRMLS_CC, E_WARNING, "The given parameter is not a valid uuencoded string");
219222
RETURN_FALSE;
220223
}

0 commit comments

Comments
 (0)