/* alloc the ftp structure */
- ftp = calloc(1, sizeof(*ftp));
- if (ftp == NULL) {
- perror("calloc");
- return NULL;
- }
+ ftp = ecalloc(1, sizeof(*ftp));
tv.tv_sec = timeout_sec;
tv.tv_usec = 0;
size = sizeof(ftp->localaddr);
memset(&ftp->localaddr, 0, size);
if (getsockname(ftp->fd, (struct sockaddr*) &ftp->localaddr, (unsigned int*)&size) == -1) {
- perror("getsockname");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "getsockname failed: %s (%d)\n", strerror(errno), errno);
goto bail;
}
bail:
if (ftp->fd != -1)
closesocket(ftp->fd);
- free(ftp);
+ efree(ftp);
return NULL;
}
/* }}} */
closesocket(ftp->fd);
}
ftp_gc(ftp);
- free(ftp);
+ efree(ftp);
return NULL;
}
/* }}} */
if (ftp == NULL)
return;
- free(ftp->pwd);
- ftp->pwd = NULL;
- free(ftp->syst);
- ftp->syst = NULL;
+ if (ftp->pwd) {
+ efree(ftp->pwd);
+ }
+ if (ftp->syst) {
+ efree(ftp->syst);
+ }
}
/* }}} */
if (!ftp_getresp(ftp) || ftp->resp != 221)
return 0;
- free(ftp->pwd);
- ftp->pwd = NULL;
+ if (ftp->pwd) {
+ efree(ftp->pwd);
+ }
return 1;
}
syst = ftp->inbuf;
if ((end = strchr(syst, ' ')))
*end = 0;
- ftp->syst = strdup(syst);
+ ftp->syst = estrdup(syst);
if (end)
*end = ' ';
/* copy out the pwd from response */
if ((pwd = strchr(ftp->inbuf, '"')) == NULL)
return NULL;
- end = strrchr(++pwd, '"');
+ if ((end = strrchr(++pwd, '"')) == NULL)
+ return NULL;
*end = 0;
- ftp->pwd = strdup(pwd);
+ ftp->pwd = estrdup(pwd);
*end = '"';
return ftp->pwd;
if (ftp == NULL)
return 0;
- free(ftp->pwd);
+ efree(ftp->pwd);
ftp->pwd = NULL;
if (!ftp_putcmd(ftp, "CWD", dir))
if (ftp == NULL)
return 0;
- free(ftp->pwd);
+ efree(ftp->pwd);
ftp->pwd = NULL;
if (!ftp_putcmd(ftp, "CDUP", NULL))
/* copy out the dir from response */
if ((mkd = strchr(ftp->inbuf, '"')) == NULL) {
- mkd = strdup(dir);
+ mkd = estrdup(dir);
return mkd;
}
-
- end = strrchr(++mkd, '"');
+ if ((end = strrchr(++mkd, '"')) == NULL) {
+ return NULL;
+ }
*end = 0;
- mkd = strdup(mkd);
+ mkd = estrdup(mkd);
*end = '"';
return mkd;
ftp->data = data;
if (resumepos>0) {
+ if (resumepos > 2147483647) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files greater then 2147483647 bytes.\n");
+ goto bail;
+ }
sprintf(arg, "%u", resumepos);
if (!ftp_putcmd(ftp, "REST", arg)) {
goto bail;
ftp->data = data;
if (startpos>0) {
+ if (startpos > 2147483647) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater then 2147483647 bytes.\n");
+ goto bail;
+ }
sprintf(arg, "%u", startpos);
if (!ftp_putcmd(ftp, "REST", arg)) {
goto bail;
return NULL;
/* alloc the data structure */
- data = calloc(1, sizeof(*data));
- if (data == NULL) {
- perror("calloc");
- return NULL;
- }
+ data = ecalloc(1, sizeof(*data));
data->listener = -1;
data->fd = -1;
data->type = ftp->type;
sa = (struct sockaddr *) &ftp->localaddr;
/* bind/listen */
if ((fd = socket(sa->sa_family, SOCK_STREAM, 0)) == -1) {
- perror("socket");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "socket() failed: %s (%d)\n", strerror(errno), errno);
goto bail;
}
tv.tv_sec = ftp->timeout_sec;
tv.tv_usec = 0;
if (php_connect_nonb(fd, (struct sockaddr*) &ftp->pasvaddr, size, &tv) == -1) {
- perror("connect");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "php_connect_nonb() failed: %s (%d)\n", strerror(errno), errno);
goto bail;
}
size = php_sockaddr_size(&addr);
if (bind(fd, (struct sockaddr*) &addr, size) == -1) {
- perror("bind");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "bind() failed: %s (%d)\n", strerror(errno), errno);
goto bail;
}
if (getsockname(fd, (struct sockaddr*) &addr, (unsigned int*)&size) == -1) {
- perror("getsockname");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "getsockname() failed: %s (%d)\n", strerror(errno), errno);
goto bail;
}
if (listen(fd, 5) == -1) {
- perror("listen");
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "listen() failed: %s (%d)\n", strerror(errno), errno);
goto bail;
}
bail:
if (fd != -1)
closesocket(fd);
- free(data);
+ efree(data);
return NULL;
}
/* }}} */
data->listener = -1;
if (data->fd == -1) {
- free(data);
+ efree(data);
return NULL;
}
if (ftp) {
ftp->data = NULL;
}
- free(data);
+ efree(data);
return NULL;
}
/* }}} */
rewind(tmpfp);
- ret = malloc((lines + 1) * sizeof(char**) + size * sizeof(char*));
- if (ret == NULL) {
- perror("malloc");
- goto bail;
- }
+ ret = emalloc((lines + 1) * sizeof(char**) + size * sizeof(char*));
entry = ret;
text = (char*) (ret + lines + 1);
fclose(tmpfp);
if (!ftp_getresp(ftp) || (ftp->resp != 226 && ftp->resp != 250)) {
- free(ret);
+ efree(ret);
return NULL;
}
bail:
data_close(ftp, data);
fclose(tmpfp);
- free(ret);
+ efree(ret);
return NULL;
}
/* }}} */
goto bail;
if (startpos>0) {
+ if (startpos > 2147483647) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "PHP cannot handle files with a size greater then 2147483647 bytes.\n");
+ goto bail;
+ }
sprintf(arg, "%u", startpos);
if (!ftp_putcmd(ftp, "REST", arg)) {
goto bail;