diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-06-17 21:12:05 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-06-17 21:12:05 +0200 |
commit | a3ae7330ecc0b8796945536771e20d586a51987d (patch) | |
tree | 139575445568072a5a0a3fe78d8aae298840a94d /ncr-key.c | |
parent | cdf6e470cdcfe74ff1522c43e15ffe1891521ad7 (diff) | |
download | cryptodev-linux-a3ae7330ecc0b8796945536771e20d586a51987d.tar.gz cryptodev-linux-a3ae7330ecc0b8796945536771e20d586a51987d.tar.xz cryptodev-linux-a3ae7330ecc0b8796945536771e20d586a51987d.zip |
Added checking in copy_from_user and copy_to_user.
Diffstat (limited to 'ncr-key.c')
-rw-r--r-- | ncr-key.c | 36 |
1 files changed, 28 insertions, 8 deletions
@@ -118,9 +118,7 @@ int ncr_key_init(struct list_sem_st* lst, void __user* arg) up(&lst->sem); desc = key->desc; - copy_to_user(arg, &desc, sizeof(desc)); - - return 0; + return copy_to_user(arg, &desc, sizeof(desc)); } @@ -128,8 +126,13 @@ int ncr_key_deinit(struct list_sem_st* lst, void __user* arg) { ncr_key_t desc; struct key_item_st * item, *tmp; + int ret; - copy_from_user( &desc, arg, sizeof(desc)); + ret = copy_from_user( &desc, arg, sizeof(desc)); + if (unlikely(ret)) { + err(); + return ret; + } down(&lst->sem); @@ -157,7 +160,11 @@ struct key_item_st* item = NULL; struct data_item_st* ditem = NULL; int ret; - copy_from_user( &data, arg, sizeof(data)); + ret = copy_from_user( &data, arg, sizeof(data)); + if (unlikely(ret)) { + err(); + return ret; + } item = ncr_key_item_get( key_lst, data.key); if (item == NULL) { @@ -221,7 +228,11 @@ struct key_item_st* item = NULL; struct data_item_st* ditem = NULL; int ret; - copy_from_user( &data, arg, sizeof(data)); + ret = copy_from_user( &data, arg, sizeof(data)); + if (unlikely(ret)) { + err(); + return ret; + } item = ncr_key_item_get( key_lst, data.key); if (item == NULL) { @@ -297,7 +308,11 @@ struct key_item_st* item = NULL; int ret; size_t size; - copy_from_user( &gen, arg, sizeof(gen)); + ret = copy_from_user( &gen, arg, sizeof(gen)); + if (unlikely(ret)) { + err(); + return ret; + } item = ncr_key_item_get( lst, gen.desc); if (item == NULL) { @@ -345,8 +360,13 @@ int ncr_key_info(struct list_sem_st* lst, void __user* arg) { struct ncr_key_info_st info; struct key_item_st* item = NULL; +int ret; - copy_from_user( &info, arg, sizeof(info)); + ret = copy_from_user( &info, arg, sizeof(info)); + if (unlikely(ret)) { + err(); + return ret; + } item = ncr_key_item_get( lst, info.key); if (item == NULL) { |