summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-01-26 21:42:23 +0100
committerLudovic Courtès <ludo@gnu.org>2015-01-26 21:58:12 +0100
commit19a454448b97d2e84164f8add9aaed42c645e338 (patch)
tree6aa2b2d52788c3029521184191f2366000aa02c6
parent4862bc4a1a20d2abf50b39713cd12985f38adf7c (diff)
downloadguix-19a454448b97d2e84164f8add9aaed42c645e338.tar.gz
guix-19a454448b97d2e84164f8add9aaed42c645e338.tar.xz
hash: Initialize libgcrypt before use.
Fixes <http://bugs.gnu.org/19677>. Reported by Mark H Weaver <mhw@netris.org>. * guix/hash.scm: Use (guix gcrypt). (sha256, open-sha256-md, md-write, md-close): Use 'libgcrypt-func' instead of 'dynamic-func'.
-rw-r--r--guix/hash.scm19
1 files changed, 7 insertions, 12 deletions
diff --git a/guix/hash.scm b/guix/hash.scm
index 593c2e1aee..a61dc980e6 100644
--- a/guix/hash.scm
+++ b/guix/hash.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,7 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix hash)
- #:use-module (guix config)
+ #:use-module (guix gcrypt)
#:use-module (rnrs bytevectors)
#:use-module (rnrs io ports)
#:use-module (system foreign)
@@ -46,8 +46,7 @@
(define sha256
(let ((hash (pointer->procedure void
- (dynamic-func "gcry_md_hash_buffer"
- (dynamic-link %libgcrypt))
+ (libgcrypt-func "gcry_md_hash_buffer")
`(,int * * ,size_t))))
(lambda (bv)
"Return the SHA256 of BV as a bytevector."
@@ -58,8 +57,7 @@
(define open-sha256-md
(let ((open (pointer->procedure int
- (dynamic-func "gcry_md_open"
- (dynamic-link %libgcrypt))
+ (libgcrypt-func "gcry_md_open")
`(* ,int ,unsigned-int))))
(lambda ()
(let* ((md (bytevector->pointer (make-bytevector (sizeof '*))))
@@ -70,20 +68,17 @@
(define md-write
(pointer->procedure void
- (dynamic-func "gcry_md_write"
- (dynamic-link %libgcrypt))
+ (libgcrypt-func "gcry_md_write")
`(* * ,size_t)))
(define md-read
(pointer->procedure '*
- (dynamic-func "gcry_md_read"
- (dynamic-link %libgcrypt))
+ (libgcrypt-func "gcry_md_read")
`(* ,int)))
(define md-close
(pointer->procedure void
- (dynamic-func "gcry_md_close"
- (dynamic-link %libgcrypt))
+ (libgcrypt-func "gcry_md_close")
'(*)))