From xemacs-m  Mon Jul 21 14:26:17 1997
Received: from altair.xemacs.org (steve@xemacs.miranova.com [206.190.83.19])
	by xemacs.org (8.8.5/8.8.5) with ESMTP id OAA05490
	for <xemacs-beta@xemacs.org>; Mon, 21 Jul 1997 14:26:16 -0500 (CDT)
Received: (from steve@localhost)
	by altair.xemacs.org (8.8.6/8.8.6) id MAA16186;
	Mon, 21 Jul 1997 12:29:50 -0700
Mail-Copies-To: never
To: xemacs-beta@xemacs.org
Subject: Logic flaw in put-database (Hegbloom crash)
X-Face: `'%\i;ySOu]g?NlziJSk_$&@]KP`}~PEQPjZ5;nxSaDW_o$4+4%Ab]%Ifw3ZR;7TIT3,O,'
 @2{L;]ox6kc;$_5kU'n**9vFg-]eV~GbxSVCx|(s%uR[],*:^WKmC`B}(;|k9/m]gwt?&`t;^rfCJg
 khHH>pP1W\)xM0U@!FNDD72{3fDP$PkBhx^7Z?-WxH6DbFN:QOnT`llzW}VGdYv;n9lzljQvKTIBhQ
 YuV
X-Attribution: sb
From: SL Baur <steve@xemacs.org>
Mime-Version: 1.0 (generated by tm-edit 7.108)
Content-Type: text/plain; charset=US-ASCII
Date: 21 Jul 1997 12:29:47 -0700
Message-ID: <m2en8s5hlg.fsf@altair.xemacs.org>
Lines: 27
X-Mailer: Gnus v5.4.64/XEmacs 20.3(beta15) - "Berlin"

$ xemacs -q -no-site-file
(progn
  (setq db (open-database "/tmp/data.db" 'berkeley-db 'hash "rw+" 0664))
  (put-database "One" '(a b c d) db))
                      ^^^^^^^^^^

The function berkdb_put is expecting to be passed strings for key and
val.  Val is passed straight through from Fput_database.  It probably
shouldn't drop core if someone is uncouth enough to pass it something
other than a string.  It should either convert a non-string value to
string with prin1-to-string, or signal a wrong-type-argument.  I'm not
sure which.  William, Martin?

static int
berkdb_put (struct database_struct *db,
	    Lisp_Object key,
	    Lisp_Object val,
	    Lisp_Object replace)
{
  DBT keydatum, valdatum;
  DB *dbp = (DB *) db->db_handle;
  int status = 0;

  keydatum.data = XSTRING_DATA   (key);
  keydatum.size = XSTRING_LENGTH (key);
  valdatum.data = XSTRING_DATA   (val); <======= Line crash is occurring on
  valdatum.size = XSTRING_LENGTH (val);

