1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-06-03 14:42:01 +03:00

misc: Add NULL checks before accessing lists

Signed-off-by: Anderson Toshiyuki Sasaki <ansasaki@redhat.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
Anderson Toshiyuki Sasaki 2019-01-15 10:05:59 +01:00 committed by Andreas Schneider
parent 5ed5e97114
commit 89f58decb6

View File

@ -485,9 +485,17 @@ static struct ssh_iterator *ssh_iterator_new(const void *data){
} }
int ssh_list_append(struct ssh_list *list,const void *data){ int ssh_list_append(struct ssh_list *list,const void *data){
struct ssh_iterator *iterator=ssh_iterator_new(data); struct ssh_iterator *iterator = NULL;
if(!iterator)
return SSH_ERROR; if (list == NULL) {
return SSH_ERROR;
}
iterator = ssh_iterator_new(data);
if (iterator == NULL) {
return SSH_ERROR;
}
if(!list->end){ if(!list->end){
/* list is empty */ /* list is empty */
list->root=list->end=iterator; list->root=list->end=iterator;
@ -500,8 +508,13 @@ int ssh_list_append(struct ssh_list *list,const void *data){
} }
int ssh_list_prepend(struct ssh_list *list, const void *data){ int ssh_list_prepend(struct ssh_list *list, const void *data){
struct ssh_iterator *it = ssh_iterator_new(data); struct ssh_iterator *it = NULL;
if (list == NULL) {
return SSH_ERROR;
}
it = ssh_iterator_new(data);
if (it == NULL) { if (it == NULL) {
return SSH_ERROR; return SSH_ERROR;
} }
@ -520,6 +533,11 @@ int ssh_list_prepend(struct ssh_list *list, const void *data){
void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator){ void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator){
struct ssh_iterator *ptr,*prev; struct ssh_iterator *ptr,*prev;
if (list == NULL) {
return;
}
prev=NULL; prev=NULL;
ptr=list->root; ptr=list->root;
while(ptr && ptr != iterator){ while(ptr && ptr != iterator){
@ -554,10 +572,17 @@ void ssh_list_remove(struct ssh_list *list, struct ssh_iterator *iterator){
* if the list is empty. * if the list is empty.
*/ */
const void *_ssh_list_pop_head(struct ssh_list *list){ const void *_ssh_list_pop_head(struct ssh_list *list){
struct ssh_iterator *iterator=list->root; struct ssh_iterator *iterator = NULL;
const void *data; const void *data = NULL;
if(!list->root)
return NULL; if (list == NULL) {
return NULL;
}
iterator = list->root;
if (iterator == NULL) {
return NULL;
}
data=iterator->data; data=iterator->data;
list->root=iterator->next; list->root=iterator->next;
if(list->end==iterator) if(list->end==iterator)