1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00
Commit graph

16009 commits

Author SHA1 Message Date
Shea Levy
d6e669b8cb
Recognize RISC-V compilation targets.
* module/system/base/target.scm (cpu-endianness): Add case for "riscv" variants.

Signed-off-by: Shea Levy <shea@shealevy.com>
Signed-off-by: Mark H Weaver <mhw@netris.org>
2018-03-15 23:17:23 -04:00
Mark H Weaver
72d80a1ea3 put-bytevector: Allow start == bytevector length.
* libguile/r6rs-ports.c (scm_put_bytevector): When three arguments (port
bv start) are provided, allow start to be equal to the length of the
bytevector, resulting in a zero-length write.
2017-07-31 12:24:11 -04:00
Andy Wingo
73d9d18488 Flush when getting string from r6rs string output port
* module/rnrs/io/ports.scm (open-string-output-port): Calling the
  get-string proc should flush the buffer and reset the file position.
* test-suite/tests/r6rs-ports.test ("8.2.10 Output ports"): Add tests.
  Thanks to Freja Nordsiek for the report.

(cherry picked from commit e13cd5c77c)
2017-03-06 20:46:21 +01:00
Andy Wingo
ee1d374981 Revert "build: Compress with lzip too."
This reverts commit 89ce9fb31b.  It was
causing hydra builds to fail.
2017-03-02 08:40:18 +01:00
Andy Wingo
ca739a29ce Fix (mkstemp! "XX" 0) errors
* libguile/filesys.c (scm_i_mkstemp): Validate "mode" argument as a
  string, and validate writability of template string early too.  Thanks
  to Jean Louis for the bug report.
2017-03-01 14:51:21 +01:00
Andy Wingo
232e199734 Remove extraneous debugging output in test
* test-suite/standalone/test-scm-c-bind-keyword-arguments.c
  (missing_value_error_handler): Remove debugging write.
2017-03-01 12:28:03 +01:00
Andy Wingo
64a8785089 Disable REPL server tests if no threads
* test-suite/tests/00-repl-server.test (call-with-repl-server): The REPL
  server needs threads so don't bother testing if we have no threads.
  Also, prevent SIGPIPE from killing the parent process.
2017-03-01 12:19:39 +01:00
Andy Wingo
ca923f842a Update gitignore after Gnulib update
* .gitignore: Update.
2017-03-01 09:25:20 +01:00
Andy Wingo
fcf8716d60 Update Gnulib to v0.1-1157-gb03f418. 2017-03-01 09:20:27 +01:00
Andy Wingo
d475b7a946 Fix scm_init_stime for macOS
* libguile/stime.c (scm_init_stime): Remove needless test of
  clock_getcpuclockid.  Fixes build on macOS; thanks to Matt Wette for
  the report and fix.
2017-03-01 09:09:47 +01:00
Andy Wingo
535261ba9f Re-enable REPL server tests
* test-suite/tests/00-repl-server.test: Revert unintended change to
  tests.
2017-02-28 21:39:02 +01:00
Andy Wingo
89ececea95 Better errors for odd-length keyword args
* libguile/vm-i-system.c (bind-kwargs):
* libguile/vm.c (vm_error_kwargs_missing_value):
* libguile/eval.c (error_missing_value)
  (prepare_boot_closure_env_for_apply): Adapt to mirror VM behavior.
* libguile/keywords.c (scm_c_bind_keyword_arguments): Likewise.
* module/ice-9/eval.scm (primitive-eval): Update to error on (foo #:kw)
  with a "Keyword argument has no value" instead of the horrible "odd
  argument list length".  Also adapts to the expected args format for
  the keyword-argument-error exception printer in all cases.  Matches
  1.8 optargs behavior also.
* test-suite/standalone/test-scm-c-bind-keyword-arguments.c (test_missing_value):
  (missing_value_error_handler): Update test.
* test-suite/tests/optargs.test: Add tests.
2017-02-28 21:01:33 +01:00
Andy Wingo
f428e93ee7 Fix (* x -1) for GOOPS types
* libguile/numbers.c (scm_product): Only reduce (* x -1) to (- x) when X
  is a bignum.  Fixes weirdness when X is not a number and instead
  multiplication should dispatch to GOOPS.  Thanks to Alejandro Sanchez
  for the report.
2017-02-28 10:15:22 +01:00
Ludovic Courtès
14c118144f build: Remove '--enable-error-on-warning' for 'make distcheck'.
* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): Remove
--enable-error-on-warning and add --enable-deprecated.
2017-02-13 22:23:46 +01:00
Ludovic Courtès
358e96318e Bump version number to 2.0.14.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
2017-02-13 22:10:41 +01:00
Ludovic Courtès
cbbf79a34b Update 'NEWS'. 2017-02-13 22:08:52 +01:00
Arne Babenhauserheide
8a5e40655b doc: Describe -e (module) on equal footing with (@ ...).
* doc/ref/guile-invoke.texi, doc/ref/scheme-scripts.texi:
describe the -e (module) shorthand as on equal footing with (@ ...)

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2017-02-13 22:02:32 +01:00
Ludovic Courtès
4b2b867c21 i18n: 'number->locale-string' guesses the minimum number of decimals.
This feature was removed by 4aead68cdb.

* module/ice-9/i18n.scm (number-decimal-string): Rewrite the case where
DIGIT-COUNT is not an integer.
(number->locale-string): Always pass FRACTION-DIGITS to
'number-decimal-string'.
* test-suite/tests/format.test ("~h localized number")["1234.5"]
["padding", "padchar"]: Remove decimal specifier.
* test-suite/tests/i18n.test ("number->locale-string")
["fraction",
* test-suite/tests/i18n.test ("format ~h")["12 345,678"]: Remove decimal
specifier.  Remove one decimal.
* doc/ref/api-i18n.texi (Number Input and Output): Update
'number->locale-string' doc to mention the number of decimals.
2017-02-13 21:34:57 +01:00
Ludovic Courtès
4aead68cdb i18n: Fix corner cases for monetary and number string conversions.
Fixes <http://bugs.gnu.org/24990>.
Reported by Martin Michel <dev@famic.de>.

* module/ice-9/i18n.scm (integer->string, number-decimal-string): New
procedures.
(monetary-amount->locale-string): Use them instead of 'number->string'
followed by 'string-split'.
(number->locale-string): Likewise.
* test-suite/tests/i18n.test ("number->locale-string")["fraction"]: Add
second argument to 'number->locale-string'.
["fraction, 1 digit"]: Round up.
["fraction, 10 digits", "trailing zeros", "negative integer"]: New
tests.
* test-suite/tests/i18n.test ("format ~h"): Pass the number of decimals
for ~h.
("monetary-amount->locale-string")["French"]: Always expect two decimals
after the comma.
["one cent", "very little money"]: New tests.
* test-suite/tests/format.test ("~h localized number")["1234.5"]:
Specify the number of decimals explicitly.
["padding"]: Expect zero decimals.
["padchar"]: Ask for one decimal.
["decimals", "locale"]: Adjust rounding.
2017-02-13 00:18:09 +01:00
Ludovic Courtès
21602109f0 tests: Choose a more plausible US English locale name.
* test-suite/tests/i18n.test (%american-english-locale-name): Change to
en_US.utf8".
2017-02-13 00:00:22 +01:00
Ludovic Courtès
eba9ff83f3 tests: Use 'pass-if-equal' for (ice-9 i18n) tests.
* test-suite/tests/i18n.test ("number->locale-string")
("format ~h", "monetary-amount->locale-string"): Use 'pass-if-equal'
instead of 'pass-if'.
2017-02-12 23:42:09 +01:00
Ludovic Courtès
68938bcadd i18n: Do not represent zero as "-0".
Partly fixes <http://bugs.gnu.org/24990>.
Reported by Martin Michel <dev@famic.de>.

* module/ice-9/i18n.scm (monetary-amount->locale-string): Don't negate
AMOUNT when it's zero.
(number->locale-string): Likewise.
* test-suite/tests/i18n.test ("number->locale-string")["positive inexact
zero, 1 digit"]: New test.
("monetary-amount->locale-string")["positive inexact zero"]: New test.
2017-02-12 23:01:16 +01:00
John Paul Adrian Glaubitz
e18251e3ba Recognize sh3 as compilation targets
* module/system/base/target.scm (cpu-endianness, triplet-pointer-size):
  Add case for "sh3".

Signed-off-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-02-12 22:07:45 +01:00
Georgi Kirilov
00b57d0ee8 doc: Fix typo in site packages documentation.
* doc/ref/scheme-using.texi (Installing Site Packages): Fix typo

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-02-12 22:06:54 +01:00
Georgi Kirilov
f637d93f40 doc: Fix typo in keywords documentation.
* doc/ref/api-data.texi (Keyword Read Syntax): Fix typo

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2017-02-12 22:06:45 +01:00
Ludovic Courtès
f2764cb103 tests: Avoid statprof test failure on systems without 'setitimer'.
Partly fixes <http://bugs.gnu.org/25463>.
Reported by rennes@openmailbox.org.

* test-suite/tests/statprof.test ("return values"): Wrap in
'when-implemented'.
2017-02-11 22:00:18 +01:00
Mark H Weaver
458ae248ab psyntax: Generate identifiers in a deterministic fashion.
Fixes <http://bugs.gnu.org/20272>.

* module/ice-9/boot-9.scm (module-generate-unique-id!)
(module-gensym): New procedures.
(module): Add 'next-unique-id' field.
(the-root-module): Inherit 'next-unique-id' value from early stub.
(make-module, make-autoload-interface): Adjust calls to
module-constructor.
* module/ice-9/psyntax.scm (gen-label, new-mark): Generate unique
identifiers from the module name and the per-module unique-id.
(build-lexical-var, generate-temporaries): Use
'module-gensym' instead of 'gensym'.
* module/ice-9/psyntax-pp.scm: Regenerate.
* module/language/tree-il/fix-letrec.scm (fix-letrec!): Use
'module-gensym' instead of 'gensym'.
* module/system/base/syntax.scm (define-record): Likewise.
(transform-record): Likewise.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2016-12-30 21:58:44 +01:00
Ludovic Courtès
54b43451ef build: Honor $SOURCE_DATE_EPOCH for the recorded timestamp.
Reported by Jan Nieuwenhuizen <janneke@gnu.org>
at <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=20272#36>.

* libguile/Makefile.am (libpath.h): Honor 'SOURCE_DATE_EPOCH'.
2016-12-14 17:20:00 +01:00
Ludovic Courtès
2fbde7f02a tests: Avoid race condition in REPL server test.
Fixes <http://bugs.gnu.org/24769>.
Reported by Rob Browning <rlb@defaultvalue.org>.

* test-suite/tests/00-repl-server.test ("simple expression"): Add call
to 'select' before 'display'.
2016-11-04 22:45:51 +01:00
Ludovic Courtès
8d6209ea56 tests: Throw 'unresolved when the REPL server is too slow.
* test-suite/tests/00-repl-server.test (call-with-repl-server):
Use (usleep 100) instead of (sleep 1).  Throw 'unresolved when TRIES is
too high.
2016-11-04 22:44:32 +01:00
Ludovic Courtès
272473fee4 scandir: Avoid 'stat' calls on each entry.
* module/ice-9/ftw.scm (scandir): Rewrite in terms of 'readdir'.
2016-10-28 22:17:10 +02:00
Ludovic Courtès
89ce9fb31b build: Compress with lzip too.
* configure.ac: Add 'dist-lzip' Automake option.
2016-10-12 12:23:48 +02:00
Ludovic Courtès
5c6bd9598d build: Check for /gnu/store file names upon "make dist".
* Makefile.am (assert-no-store-file-names): New rule, taken from Guix.
(dist-hook): Depend on it.
2016-10-12 12:23:46 +02:00
Ludovic Courtès
cd1b530b2a Bump version number to 2.0.13.
* GUILE-VERSION (GUILE_MICRO_VERSION): Increment.
(LIBGUILE_INTERFACE_REVISION): Increment.
2016-10-12 10:38:16 +02:00
Ludovic Courtès
606cf7f7f4 Update 'NEWS'. 2016-10-12 10:33:06 +02:00
Ludovic Courtès
52cf9b2a2c build: Avoid use of Bash's $(...) construct in 'configure'.
This is a followup to be8be776df.

* acinclude.m4 (GUILE_CHECK_GUILE_FOR_BUILD): Use backquotes instead of
$(...).
2016-10-12 10:33:06 +02:00
Ludovic Courtès
66689cc004 tests: Add REPL server test for CVE-2016-8606.
This is a followup to 08c021916d.

* test-suite/tests/00-repl-server.test: New file.
* test-suite/Makefile.am (SCM_TESTS): Add it.
2016-10-12 09:37:18 +02:00
Mark H Weaver
08c021916d REPL Server: Guard against HTTP inter-protocol exploitation attacks.
Reported by Christopher Allan Webber <cwebber@dustycloud.org>
Co-authored-by: Ludovic Courtès <ludo@gnu.org>

This commit adds protection to Guile's REPL servers against HTTP
inter-protocol exploitation attacks, a scenario whereby an attacker can,
via an HTML page, cause a web browser to send data to TCP servers
listening on a loopback interface or private network.  See
<https://en.wikipedia.org/wiki/Inter-protocol_exploitation> and
<https://www.jochentopf.com/hfpa/hfpa.pdf>, The HTML Form Protocol
Attack (2001) by Tochen Topf <jochen@remote.org>.

Here we add a procedure to 'before-read-hook' that looks for a possible
HTTP request-line in the first line of input from the client socket.  If
present, the socket is drained and closed, and a loud warning is written
to stderr (POSIX file descriptor 2).

* module/system/repl/server.scm: Add 'maybe-check-for-http-request'
to 'before-read-hook' when this module is loaded.
(with-temporary-port-encoding, with-saved-port-line+column)
(drain-input-and-close, permissive-http-request-line?)
(check-for-http-request, guard-against-http-request)
(maybe-check-for-http-request): New procedures.
(serve-client): Use 'guard-against-http-request'.
* module/system/repl/coop-server.scm (start-repl-client): Use
'guard-against-http-request'.
* doc/ref/guile-invoke.texi (Command-line Options): In the description
of the --listen option, make the security warning more prominent.
Mention the new protection added here.  Recommend using UNIX domain
sockets for REPL servers.  "a path to" => "the file name of".
2016-10-11 11:29:09 +02:00
Ludovic Courtès
4a21e5f200 tests: Use the "normalized codeset" in locale names.
* test-suite/tests/i18n.test (%french-locale-name)
(%french-utf8-locale-name, %turkish-utf8-locale-name)
(%german-utf8-locale-name, %greek-utf8-locale-name): Use the normalized
codeset for ISO-8859-1 and UTF-8.
2016-10-11 11:09:46 +02:00
Ludovic Courtès
7043b7ff64 Treat 'SIG_IGN' as a pointer.
* libguile/posix.c (scm_system_star): Cast 'SIG_IGN' to
'scm_t_uintptr_t' and use 'scm_from_uintptr_t'.  This fixes an
'int-conversion' warning with GCC 6.2.
2016-10-11 10:57:43 +02:00
Ludovic Courtès
79bac3bf31 Add 'scm_to_uintptr_t' and 'scm_from_uintptr_t'.
* libguile/numbers.h (scm_to_uintptr_t, scm_from_uintptr_t): New
macros.
* doc/ref/api-data.texi (Integers): Document them.
* NEWS: Mention it.
2016-10-11 10:57:18 +02:00
Ludovic Courtès
2456089116 Remove 'umask' calls from 'mkdir'.
Fixes <http://bugs.gnu.org/24659>.

* libguile/filesys.c (SCM_DEFINE): Remove calls to 'umask' when MODE is
unbound; instead, use 0777 as the mode.  Update docstring to clarify
this.
* doc/ref/posix.texi (File System): Adjust accordingly.
* NEWS: Mention it.
2016-10-11 10:23:57 +02:00
Mark H Weaver
4f324684cc Check for closed port in 'port-encoding' and 'set-port-encoding!'.
* libguile/ports.c (scm_port_encoding, scm_set_port_encoding_x): Use
SCM_VALIDATE_OPPORT.
2016-09-09 07:34:52 -04:00
Mark H Weaver
622bd8f14b http: Do not use 'eq?' to compare characters in parse-request-uri.
* module/web/http.scm (parse-request-uri): Use 'eqv?' to compare
characters.
2016-09-09 07:32:53 -04:00
Andy Wingo
78eb40c066 Move system* to posix.c, impl on open-process
* libguile/simpos.c: Trim includes.
  (scm_system_star): Move to posix.c.
* libguile/simpos.h (scm_system_star): Remove.
* libguile/posix.h (scm_system_star): Add.
* libguile/posix.c (scm_system_star): Move here and implement in terms
  of open-process.  This lets system* work on Windows.  Inspired by a
  patch by Eli Zaretskii.
  (start_child): Exit with 127 if the command isn't found.
2016-08-31 10:47:03 +02:00
Mark H Weaver
9eb8c3652d
build: .x and .doc files depend on generated includes.
Fixes <https://bugs.gentoo.org/show_bug.cgi?id=590528>.

* libguile/Makefile.am (BUILT_INCLUDES): New variable.
(BUILT_SOURCES): Put .i and other generated .h to BUILT_INCLUDES.
(DOT_X_FILES, EXTRA_DOT_X_FILES, DOT_DOC_FILES, EXTRA_DOT_DOC_FILES):
Depend on $(BUILT_INCLUDES), in place of scmconfig.h which is included
in $(BUILT_INCLUDES).
2016-08-11 05:44:03 -04:00
Mark H Weaver
86278b4bbd
Revert "Snarfing .x depends on built headers"
This reverts commit edd6d6e280.

As reported at <https://bugs.gentoo.org/show_bug.cgi?id=590528#c10>,
that commit failed to fix the bug.

That commit was based on the mistaken belief that the make rule syntax
".c.x: $(BUILT_INCLUDES)" means the same as ".c.x:" but with the added
prerequisites "$(BUILT_INCLUDES)".  However, as explained in section
10.7 (Old-Fashioned Suffix Rules) of the GNU Make manual:

      Suffix rules cannot have any prerequisites of their own.  If they
   have any, they are treated as normal files with funny names, not as
   suffix rules.  Thus, the rule:

        .c.o: foo.h
                $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

   tells how to make the file '.c.o' from the prerequisite file 'foo.h',
   and is not at all like the pattern rule:

        %.o: %.c foo.h
                $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

   which tells how to make '.o' files from '.c' files, and makes all
   '.o' files using this pattern rule also depend on 'foo.h'.
2016-08-11 05:43:50 -04:00
James Clarke
664586aff4 Recognize alpha as compilation target
* module/system/base/target.scm (cpu-endianness): Add case for "alpha".
(triplet-pointer-size): Likewise.
2016-08-08 22:21:09 +02:00
sirgazil
c5f00813e9 Fix typo about variable definitions
* doc/ref/api-binding.texi (Top Level Variable Definitions): Fix typo.
2016-08-08 22:20:51 +02:00
Ethan Stefan Day
6a22d42fbc Documentation fixes
* doc/ref/api-compound.texi:
* doc/ref/api-control.texi:
* doc/ref/api-data.texi: Fix typos and clarify.
2016-08-08 22:20:51 +02:00