aboutsummaryrefslogtreecommitdiffstats
path: root/fs/exec.c
Commit message (Expand)AuthorAge
* [PATCH] fix zap_thread's ptrace related problemsOleg Nesterov2006-02-15
* [PATCH] vfs: *at functions: coreUlrich Drepper2006-01-18
* [PATCH] Unlinline a bunch of other functionsArjan van de Ven2006-01-14
* [PATCH] hrtimer: switch itimers to hrtimerThomas Gleixner2006-01-10
* [PATCH] do_coredump() should reset group_stop_count earlierOleg Nesterov2006-01-08
* [PATCH] Fix some problems with truncate and mtime semantics.NeilBrown2006-01-08
* [PATCH] RCU signal handlingIngo Molnar2006-01-08
* [PATCH] mm: rmap optimisationNick Piggin2006-01-06
* VM: add common helper function to create the page tablesLinus Torvalds2005-11-29
* [PATCH] fix do_wait() vs exec() raceOleg Nesterov2005-11-23
* [PATCH] add a file_permission helperChristoph Hellwig2005-11-09
* [PATCH] add a vfs_permission helperChristoph Hellwig2005-11-09
* [PATCH] fix de_thread() vs send_group_sigqueue() raceOleg Nesterov2005-11-08
* [PATCH] VFS: pass file pointer to filesystem from ftruncate()Miklos Szeredi2005-11-07
* [PATCH] Process Events ConnectorMatt Helsley2005-11-07
* [PATCH] fix de_thread() vs do_coredump() deadlockOleg Nesterov2005-10-30
* [PATCH] coredump_wait() cleanupOleg Nesterov2005-10-30
* [PATCH] fix de_thread vs it_real_fn() deadlockOleg Nesterov2005-10-30
* [PATCH] little de_thread() cleanupOleg Nesterov2005-10-30
* [PATCH] mm: ptd_alloc take ptlockHugh Dickins2005-10-30
* [PATCH] mm: update_hiwaters just in timeHugh Dickins2005-10-30
* [PATCH] mm: rss = file_rss + anon_rssHugh Dickins2005-10-30
* VFS: Allow the filesystem to return a full file pointer on open intentTrond Myklebust2005-10-18
* [PATCH] error path in setup_arg_pages() misses vm_unacct_memory()Hugh Dickins2005-09-14
* [PATCH] Fix fs/exec.c:788 (de_thread()) BUG_ONAlexander Nyberg2005-09-14
* [PATCH] files: break up files structDipankar Sarma2005-09-09
* [PATCH] reset real_timer target on exec leader changeRoland McGrath2005-07-12
* [PATCH] setuid core dumpAlan Cox2005-06-23
* Clean up subthread execLinus Torvalds2005-06-18
* [PATCH] comments on locking of task->commPaolo 'Blaisorblade' Giarrusso2005-05-05
* [PATCH] make some things staticAdrian Bunk2005-05-05
* Linux-2.6.12-rc2v2.6.12-rc2Linus Torvalds2005-04-16
span class="hl opt">= hash[2]; d = hash[3]; ROUND1(a, b, c, d, in[0], 3); ROUND1(d, a, b, c, in[1], 7); ROUND1(c, d, a, b, in[2], 11); ROUND1(b, c, d, a, in[3], 19); ROUND1(a, b, c, d, in[4], 3); ROUND1(d, a, b, c, in[5], 7); ROUND1(c, d, a, b, in[6], 11); ROUND1(b, c, d, a, in[7], 19); ROUND1(a, b, c, d, in[8], 3); ROUND1(d, a, b, c, in[9], 7); ROUND1(c, d, a, b, in[10], 11); ROUND1(b, c, d, a, in[11], 19); ROUND1(a, b, c, d, in[12], 3); ROUND1(d, a, b, c, in[13], 7); ROUND1(c, d, a, b, in[14], 11); ROUND1(b, c, d, a, in[15], 19); ROUND2(a, b, c, d,in[ 0], 3); ROUND2(d, a, b, c, in[4], 5); ROUND2(c, d, a, b, in[8], 9); ROUND2(b, c, d, a, in[12], 13); ROUND2(a, b, c, d, in[1], 3); ROUND2(d, a, b, c, in[5], 5); ROUND2(c, d, a, b, in[9], 9); ROUND2(b, c, d, a, in[13], 13); ROUND2(a, b, c, d, in[2], 3); ROUND2(d, a, b, c, in[6], 5); ROUND2(c, d, a, b, in[10], 9); ROUND2(b, c, d, a, in[14], 13); ROUND2(a, b, c, d, in[3], 3); ROUND2(d, a, b, c, in[7], 5); ROUND2(c, d, a, b, in[11], 9); ROUND2(b, c, d, a, in[15], 13); ROUND3(a, b, c, d,in[ 0], 3); ROUND3(d, a, b, c, in[8], 9); ROUND3(c, d, a, b, in[4], 11); ROUND3(b, c, d, a, in[12], 15); ROUND3(a, b, c, d, in[2], 3); ROUND3(d, a, b, c, in[10], 9); ROUND3(c, d, a, b, in[6], 11); ROUND3(b, c, d, a, in[14], 15); ROUND3(a, b, c, d, in[1], 3); ROUND3(d, a, b, c, in[9], 9); ROUND3(c, d, a, b, in[5], 11); ROUND3(b, c, d, a, in[13], 15); ROUND3(a, b, c, d, in[3], 3); ROUND3(d, a, b, c, in[11], 9); ROUND3(c, d, a, b, in[7], 11); ROUND3(b, c, d, a, in[15], 15); hash[0] += a; hash[1] += b; hash[2] += c; hash[3] += d; } static inline void md4_transform_helper(struct md4_ctx *ctx) { le32_to_cpu_array(ctx->block, ARRAY_SIZE(ctx->block)); md4_transform(ctx->hash, ctx->block); } static int md4_init(struct shash_desc *desc) { struct md4_ctx *mctx = shash_desc_ctx(desc); mctx->hash[0] = 0x67452301; mctx->hash[1] = 0xefcdab89; mctx->hash[2] = 0x98badcfe; mctx->hash[3] = 0x10325476; mctx->byte_count = 0; return 0; } static int md4_update(struct shash_desc *desc, const u8 *data, unsigned int len) { struct md4_ctx *mctx = shash_desc_ctx(desc); const u32 avail = sizeof(mctx->block) - (mctx->byte_count & 0x3f); mctx->byte_count += len; if (avail > len) { memcpy((char *)mctx->block + (sizeof(mctx->block) - avail), data, len); return 0; } memcpy((char *)mctx->block + (sizeof(mctx->block) - avail), data, avail); md4_transform_helper(mctx); data += avail; len -= avail; while (len >= sizeof(mctx->block)) { memcpy(mctx->block, data, sizeof(mctx->block)); md4_transform_helper(mctx); data += sizeof(mctx->block); len -= sizeof(mctx->block); } memcpy(mctx->block, data, len); return 0; } static int md4_final(struct shash_desc *desc, u8 *out) { struct md4_ctx *mctx = shash_desc_ctx(desc); const unsigned int offset = mctx->byte_count & 0x3f; char *p = (char *)mctx->block + offset; int padding = 56 - (offset + 1); *p++ = 0x80; if (padding < 0) { memset(p, 0x00, padding + sizeof (u64)); md4_transform_helper(mctx); p = (char *)mctx->block; padding = 56; } memset(p, 0, padding); mctx->block[14] = mctx->byte_count << 3; mctx->block[15] = mctx->byte_count >> 29; le32_to_cpu_array(mctx->block, (sizeof(mctx->block) - sizeof(u64)) / sizeof(u32)); md4_transform(mctx->hash, mctx->block); cpu_to_le32_array(mctx->hash, ARRAY_SIZE(mctx->hash)); memcpy(out, mctx->hash, sizeof(mctx->hash)); memset(mctx, 0, sizeof(*mctx)); return 0; } static struct shash_alg alg = { .digestsize = MD4_DIGEST_SIZE, .init = md4_init, .update = md4_update, .final = md4_final, .descsize = sizeof(struct md4_ctx), .base = { .cra_name = "md4", .cra_flags = CRYPTO_ALG_TYPE_SHASH, .cra_blocksize = MD4_HMAC_BLOCK_SIZE, .cra_module = THIS_MODULE, } }; static int __init md4_mod_init(void) { return crypto_register_shash(&alg); } static void __exit md4_mod_fini(void) { crypto_unregister_shash(&alg); } module_init(md4_mod_init); module_exit(md4_mod_fini); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("MD4 Message Digest Algorithm");