diff options
Diffstat (limited to 'fs/binfmt_flat.c')
| -rw-r--r-- | fs/binfmt_flat.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c index 397d3057d33..1bffbe0ed77 100644 --- a/fs/binfmt_flat.c +++ b/fs/binfmt_flat.c | |||
| @@ -820,6 +820,8 @@ static int load_flat_shared_library(int id, struct lib_info *libs) | |||
| 820 | int res; | 820 | int res; |
| 821 | char buf[16]; | 821 | char buf[16]; |
| 822 | 822 | ||
| 823 | memset(&bprm, 0, sizeof(bprm)); | ||
| 824 | |||
| 823 | /* Create the file name */ | 825 | /* Create the file name */ |
| 824 | sprintf(buf, "/lib/lib%d.so", id); | 826 | sprintf(buf, "/lib/lib%d.so", id); |
| 825 | 827 | ||
| @@ -835,6 +837,12 @@ static int load_flat_shared_library(int id, struct lib_info *libs) | |||
| 835 | if (!bprm.cred) | 837 | if (!bprm.cred) |
| 836 | goto out; | 838 | goto out; |
| 837 | 839 | ||
| 840 | /* We don't really care about recalculating credentials at this point | ||
| 841 | * as we're past the point of no return and are dealing with shared | ||
| 842 | * libraries. | ||
| 843 | */ | ||
| 844 | bprm.cred_prepared = 1; | ||
| 845 | |||
| 838 | res = prepare_binprm(&bprm); | 846 | res = prepare_binprm(&bprm); |
| 839 | 847 | ||
| 840 | if (!IS_ERR_VALUE(res)) | 848 | if (!IS_ERR_VALUE(res)) |
