diff options
author | Michael Halcrow <mhalcrow@us.ibm.com> | 2007-10-16 04:28:12 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-16 12:43:12 -0400 |
commit | d6a13c17164fccab8aa96ca435ddacbf428335ca (patch) | |
tree | 8995bb0b5c22a97c8f6c86eff797ff2de0421ee2 /fs/ecryptfs/crypto.c | |
parent | bf12be1cc851cface331b0e74713a6bb1cb046b0 (diff) |
eCryptfs: fix data types
Update data types and add casts in order to avoid potential overflow
issues.
Signed-off-by: Michael Halcrow <mhalcrow@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/ecryptfs/crypto.c')
-rw-r--r-- | fs/ecryptfs/crypto.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c index 26070d69e59a..9408ea484164 100644 --- a/fs/ecryptfs/crypto.c +++ b/fs/ecryptfs/crypto.c | |||
@@ -149,7 +149,7 @@ out: | |||
149 | * ecryptfs_derive_iv | 149 | * ecryptfs_derive_iv |
150 | * @iv: destination for the derived iv vale | 150 | * @iv: destination for the derived iv vale |
151 | * @crypt_stat: Pointer to crypt_stat struct for the current inode | 151 | * @crypt_stat: Pointer to crypt_stat struct for the current inode |
152 | * @offset: Offset of the page whose's iv we are to derive | 152 | * @offset: Offset of the extent whose IV we are to derive |
153 | * | 153 | * |
154 | * Generate the initialization vector from the given root IV and page | 154 | * Generate the initialization vector from the given root IV and page |
155 | * offset. | 155 | * offset. |
@@ -157,7 +157,7 @@ out: | |||
157 | * Returns zero on success; non-zero on error. | 157 | * Returns zero on success; non-zero on error. |
158 | */ | 158 | */ |
159 | static int ecryptfs_derive_iv(char *iv, struct ecryptfs_crypt_stat *crypt_stat, | 159 | static int ecryptfs_derive_iv(char *iv, struct ecryptfs_crypt_stat *crypt_stat, |
160 | pgoff_t offset) | 160 | loff_t offset) |
161 | { | 161 | { |
162 | int rc = 0; | 162 | int rc = 0; |
163 | char dst[MD5_DIGEST_SIZE]; | 163 | char dst[MD5_DIGEST_SIZE]; |
@@ -173,7 +173,7 @@ static int ecryptfs_derive_iv(char *iv, struct ecryptfs_crypt_stat *crypt_stat, | |||
173 | * hashing business. -Halcrow */ | 173 | * hashing business. -Halcrow */ |
174 | memcpy(src, crypt_stat->root_iv, crypt_stat->iv_bytes); | 174 | memcpy(src, crypt_stat->root_iv, crypt_stat->iv_bytes); |
175 | memset((src + crypt_stat->iv_bytes), 0, 16); | 175 | memset((src + crypt_stat->iv_bytes), 0, 16); |
176 | snprintf((src + crypt_stat->iv_bytes), 16, "%ld", offset); | 176 | snprintf((src + crypt_stat->iv_bytes), 16, "%lld", offset); |
177 | if (unlikely(ecryptfs_verbosity > 0)) { | 177 | if (unlikely(ecryptfs_verbosity > 0)) { |
178 | ecryptfs_printk(KERN_DEBUG, "source:\n"); | 178 | ecryptfs_printk(KERN_DEBUG, "source:\n"); |
179 | ecryptfs_dump_hex(src, (crypt_stat->iv_bytes + 16)); | 179 | ecryptfs_dump_hex(src, (crypt_stat->iv_bytes + 16)); |
@@ -497,11 +497,11 @@ static int ecryptfs_encrypt_extent(struct page *enc_extent_page, | |||
497 | struct page *page, | 497 | struct page *page, |
498 | unsigned long extent_offset) | 498 | unsigned long extent_offset) |
499 | { | 499 | { |
500 | unsigned long extent_base; | 500 | loff_t extent_base; |
501 | char extent_iv[ECRYPTFS_MAX_IV_BYTES]; | 501 | char extent_iv[ECRYPTFS_MAX_IV_BYTES]; |
502 | int rc; | 502 | int rc; |
503 | 503 | ||
504 | extent_base = (page->index | 504 | extent_base = (((loff_t)page->index) |
505 | * (PAGE_CACHE_SIZE / crypt_stat->extent_size)); | 505 | * (PAGE_CACHE_SIZE / crypt_stat->extent_size)); |
506 | rc = ecryptfs_derive_iv(extent_iv, crypt_stat, | 506 | rc = ecryptfs_derive_iv(extent_iv, crypt_stat, |
507 | (extent_base + extent_offset)); | 507 | (extent_base + extent_offset)); |
@@ -605,8 +605,9 @@ int ecryptfs_encrypt_page(struct page *page) | |||
605 | goto out; | 605 | goto out; |
606 | } | 606 | } |
607 | ecryptfs_lower_offset_for_extent( | 607 | ecryptfs_lower_offset_for_extent( |
608 | &offset, ((page->index * (PAGE_CACHE_SIZE | 608 | &offset, ((((loff_t)page->index) |
609 | / crypt_stat->extent_size)) | 609 | * (PAGE_CACHE_SIZE |
610 | / crypt_stat->extent_size)) | ||
610 | + extent_offset), crypt_stat); | 611 | + extent_offset), crypt_stat); |
611 | rc = ecryptfs_write_lower(ecryptfs_inode, enc_extent_virt, | 612 | rc = ecryptfs_write_lower(ecryptfs_inode, enc_extent_virt, |
612 | offset, crypt_stat->extent_size); | 613 | offset, crypt_stat->extent_size); |
@@ -628,11 +629,11 @@ static int ecryptfs_decrypt_extent(struct page *page, | |||
628 | struct page *enc_extent_page, | 629 | struct page *enc_extent_page, |
629 | unsigned long extent_offset) | 630 | unsigned long extent_offset) |
630 | { | 631 | { |
631 | unsigned long extent_base; | 632 | loff_t extent_base; |
632 | char extent_iv[ECRYPTFS_MAX_IV_BYTES]; | 633 | char extent_iv[ECRYPTFS_MAX_IV_BYTES]; |
633 | int rc; | 634 | int rc; |
634 | 635 | ||
635 | extent_base = (page->index | 636 | extent_base = (((loff_t)page->index) |
636 | * (PAGE_CACHE_SIZE / crypt_stat->extent_size)); | 637 | * (PAGE_CACHE_SIZE / crypt_stat->extent_size)); |
637 | rc = ecryptfs_derive_iv(extent_iv, crypt_stat, | 638 | rc = ecryptfs_derive_iv(extent_iv, crypt_stat, |
638 | (extent_base + extent_offset)); | 639 | (extent_base + extent_offset)); |
@@ -1471,7 +1472,7 @@ ecryptfs_write_metadata_to_contents(struct ecryptfs_crypt_stat *crypt_stat, | |||
1471 | while (current_header_page < header_pages) { | 1472 | while (current_header_page < header_pages) { |
1472 | loff_t offset; | 1473 | loff_t offset; |
1473 | 1474 | ||
1474 | offset = (current_header_page << PAGE_CACHE_SHIFT); | 1475 | offset = (((loff_t)current_header_page) << PAGE_CACHE_SHIFT); |
1475 | if ((rc = ecryptfs_write_lower(ecryptfs_dentry->d_inode, | 1476 | if ((rc = ecryptfs_write_lower(ecryptfs_dentry->d_inode, |
1476 | page_virt, offset, | 1477 | page_virt, offset, |
1477 | PAGE_CACHE_SIZE))) { | 1478 | PAGE_CACHE_SIZE))) { |