projects
/
silc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
f814e30
)
No malloc in memfs read operation.
author
Pekka Riikonen
<priikone@silcnet.org>
Thu, 15 Feb 2007 07:28:12 +0000
(07:28 +0000)
committer
Pekka Riikonen
<priikone@silcnet.org>
Thu, 15 Feb 2007 07:28:12 +0000
(07:28 +0000)
lib/silcsftp/sftp_fs_memory.c
patch
|
blob
|
history
diff --git
a/lib/silcsftp/sftp_fs_memory.c
b/lib/silcsftp/sftp_fs_memory.c
index e502931a362ebc64963bb261ef4416bf9a3b7f68..87e3a863cfef931e29710b6280cd52761ddfa6d0 100644
(file)
--- 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;
void *callback_context)
{
MemFSFileHandle h = (MemFSFileHandle)handle;
- unsigned char *data;
+ unsigned char *data
[32768]
;
int ret;
if (len > 32768)
len = 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;
}
return;
}
- lseek(h->fd, (off_t)offset, SEEK_SET);
/* Attempt to read */
ret = silc_file_read(h->fd, data, len);
/* 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);
(*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);
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,
}
void mem_write(void *context, SilcSFTP sftp,