65
65
66
66
#define PHP_UU_DEC (c ) (((c) - ' ') & 077)
67
67
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 ) /* {{{ */
69
69
{
70
- int len = 45 ;
70
+ zend_str_size_int len = 45 ;
71
71
char * p , * s , * e , * ee ;
72
72
73
73
/* encoded length is ~ 38% greater than the original */
@@ -124,11 +124,12 @@ PHPAPI int php_uuencode(char *src, int src_len, char **dest) /* {{{ */
124
124
}
125
125
/* }}} */
126
126
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 ) /* {{{ */
128
128
{
129
- int len , total_len = 0 ;
129
+ zend_str_size_int len , total_len = 0 ;
130
130
char * s , * e , * p , * ee ;
131
131
132
+ * error = 0 ;
132
133
p = * dest = safe_emalloc ((size_t ) ceil (src_len * 0.75 ), 1 , 1 );
133
134
s = src ;
134
135
e = src + src_len ;
@@ -181,7 +182,8 @@ PHPAPI int php_uudecode(char *src, int src_len, char **dest) /* {{{ */
181
182
182
183
err :
183
184
efree (* dest );
184
- return -1 ;
185
+ * error = 1 ;
186
+ return 0 ;
185
187
}
186
188
/* }}} */
187
189
@@ -190,9 +192,9 @@ PHPAPI int php_uudecode(char *src, int src_len, char **dest) /* {{{ */
190
192
PHP_FUNCTION (convert_uuencode )
191
193
{
192
194
char * src , * dst ;
193
- int src_len , dst_len ;
195
+ zend_str_size_int src_len , dst_len ;
194
196
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 ) {
196
198
RETURN_FALSE ;
197
199
}
198
200
@@ -207,14 +209,15 @@ PHP_FUNCTION(convert_uuencode)
207
209
PHP_FUNCTION (convert_uudecode )
208
210
{
209
211
char * src , * dst ;
210
- int src_len , dst_len ;
212
+ zend_str_size_int src_len , dst_len ;
213
+ int err = 0 ;;
211
214
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 ) {
213
216
RETURN_FALSE ;
214
217
}
215
218
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 ) {
218
221
php_error_docref (NULL TSRMLS_CC , E_WARNING , "The given parameter is not a valid uuencoded string" );
219
222
RETURN_FALSE ;
220
223
}
0 commit comments