From 860e013bf18c0c95da5a843a7ac0bc5908883370 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Thu, 15 Feb 2007 07:28:12 +0000 Subject: [PATCH] No malloc in memfs read operation. --- lib/silcsftp/sftp_fs_memory.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) 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, -- 2.24.0