From: Pekka Riikonen Date: Thu, 15 Feb 2007 07:28:12 +0000 (+0000) Subject: No malloc in memfs read operation. X-Git-Tag: silc.client.1.1.beta1~11 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=860e013bf18c0c95da5a843a7ac0bc5908883370 No malloc in memfs read operation. --- diff --git a/lib/silcsftp/sftp_fs_memory.c b/lib/silcsftp/sftp_fs_memory.c index e502931a..87e3a863 100644 --- a/lib/silcsftp/sftp_fs_memory.c +++ b/lib/silcsftp/sftp_fs_memory.c @@ -619,18 +619,20 @@ void mem_read(void *context, SilcSFTP sftp, void *callback_context) { MemFSFileHandle h = (MemFSFileHandle)handle; - unsigned char *data; + unsigned char *data[32768]; int ret; if (len > 32768) len = 32768; - data = silc_malloc(len); - if (!data) { - (*callback)(sftp, SILC_SFTP_STATUS_EOF, NULL, 0, callback_context); + ret = lseek(h->fd, (off_t)offset, SEEK_SET); + if (ret < 0) { + if (!ret) + (*callback)(sftp, SILC_SFTP_STATUS_EOF, NULL, 0, callback_context); + else + (*callback)(sftp, silc_sftp_map_errno(errno), NULL, 0, callback_context); return; } - lseek(h->fd, (off_t)offset, SEEK_SET); /* Attempt to read */ ret = silc_file_read(h->fd, data, len); @@ -639,15 +641,12 @@ void mem_read(void *context, SilcSFTP sftp, (*callback)(sftp, SILC_SFTP_STATUS_EOF, NULL, 0, callback_context); else (*callback)(sftp, silc_sftp_map_errno(errno), NULL, 0, callback_context); - silc_free(data); return; } /* Return data */ (*callback)(sftp, SILC_SFTP_STATUS_OK, (const unsigned char *)data, ret, callback_context); - - silc_free(data); } void mem_write(void *context, SilcSFTP sftp,