diff options
author | Ludovic Courtès <ludo@gnu.org> | 2017-12-22 11:40:27 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2017-12-22 11:40:27 +0100 |
commit | deef64a739d868ed5fda4e55e387528c1b6c196b (patch) | |
tree | f34ce861cbfaab0d7f30e75fc1f4e5dd1185c6f5 /libguile/loader.c | |
parent | 6d391bf1a41e378e568cd148631b1beec7577e66 (diff) | |
download | guile-deef64a739d868ed5fda4e55e387528c1b6c196b.tar.gz |
'load-thunk-from-memory' reports the correct error.
Previously 'load-thunk-from-memory' would often throw to 'system-error'
when passed an incorrect ELF file, leading to incorrect error messages.
* libguile/loader.c (load_thunk_from_memory): Reset 'errno' when
'check_elf_header' returns non-NULL.
* test-suite/tests/vm.test: New file.
* test-suite/Makefile.am (SCM_TESTS): Add it.
Diffstat (limited to 'libguile/loader.c')
-rw-r--r-- | libguile/loader.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libguile/loader.c b/libguile/loader.c index 54bf1bff5..26a73436b 100644 --- a/libguile/loader.c +++ b/libguile/loader.c @@ -1,5 +1,5 @@ /* Copyright (C) 2001, 2009, 2010, 2011, 2012 - * 2013, 2014, 2015 Free Software Foundation, Inc. + * 2013, 2014, 2015, 2017 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -362,7 +362,10 @@ load_thunk_from_memory (char *data, size_t len, int is_read_only) header = (Elf_Ehdr*) data; if ((err_msg = check_elf_header (header))) - goto cleanup; + { + errno = 0; /* not an OS error */ + goto cleanup; + } if (header->e_phnum == 0) ABORT ("no loadable segments"); |