aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2009-06-19 10:18:24 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2009-06-19 10:18:24 +0200
commit8336c91e9c7f5a672ebffecb9a0772892e197283 (patch)
treef698808f6be7a9efc9ee93057bf19dcc318d1f8c
parent1bea53375b2fb764d9a900a0946d71d7baafb00f (diff)
downloadlibssh-8336c91e9c7f5a672ebffecb9a0772892e197283.tar.gz
libssh-8336c91e9c7f5a672ebffecb9a0772892e197283.tar.xz
libssh-8336c91e9c7f5a672ebffecb9a0772892e197283.zip
Verify memory return codes in ssh_list functions
-rw-r--r--include/libssh/priv.h2
-rw-r--r--libssh/misc.c9
2 files changed, 8 insertions, 3 deletions
diff --git a/include/libssh/priv.h b/include/libssh/priv.h
index dab9aa73..4c380deb 100644
--- a/include/libssh/priv.h
+++ b/include/libssh/priv.h
@@ -723,7 +723,7 @@ struct ssh_iterator {
struct ssh_list *ssh_list_new(void);
void ssh_list_free(struct ssh_list *list);
struct ssh_iterator *ssh_list_get_iterator(const struct ssh_list *list);
-void ssh_list_add(struct ssh_list *list, const void *data);
+int ssh_list_add(struct ssh_list *list, const void *data);
void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator);
/** @brief fetch the head element of a list and remove it from list
diff --git a/libssh/misc.c b/libssh/misc.c
index 8aa533e8..83a05207 100644
--- a/libssh/misc.c
+++ b/libssh/misc.c
@@ -152,7 +152,7 @@ const char *ssh_version(int req_version) {
struct ssh_list *ssh_list_new(){
struct ssh_list *ret=malloc(sizeof(struct ssh_list));
if(!ret)
- return ret;
+ return NULL;
ret->root=ret->end=NULL;
return ret;
}
@@ -174,13 +174,17 @@ struct ssh_iterator *ssh_list_get_iterator(const struct ssh_list *list){
static struct ssh_iterator *ssh_iterator_new(const void *data){
struct ssh_iterator *iterator=malloc(sizeof(struct ssh_iterator));
+ if(!iterator)
+ return NULL;
iterator->next=NULL;
iterator->data=data;
return iterator;
}
-void ssh_list_add(struct ssh_list *list,const void *data){
+int ssh_list_add(struct ssh_list *list,const void *data){
struct ssh_iterator *iterator=ssh_iterator_new(data);
+ if(!iterator)
+ return SSH_ERROR;
if(!list->end){
/* list is empty */
list->root=list->end=iterator;
@@ -189,6 +193,7 @@ void ssh_list_add(struct ssh_list *list,const void *data){
list->end->next=iterator;
list->end=iterator;
}
+ return SSH_OK;
}
void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator){