projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Try to avoid SEGV in Expat when XML_Parse fails
[idzebra-moved-to-github.git]
/
recctrl
/
recgrs.c
diff --git
a/recctrl/recgrs.c
b/recctrl/recgrs.c
index
6c90b35
..
1bae99d
100644
(file)
--- a/
recctrl/recgrs.c
+++ b/
recctrl/recgrs.c
@@
-1,4
+1,4
@@
-/* $Id: recgrs.c,v 1.80 2003-06-12 18:20:08 adam Exp $
+/* $Id: recgrs.c,v 1.82 2003-08-21 10:29:00 adam Exp $
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
Index Data Aps
@@
-62,7
+62,8
@@
static int read_grs_type (struct grs_handlers *h,
strcpy (p->type, cp+1);
for (gh = h->handlers; gh; gh = gh->next)
{
strcpy (p->type, cp+1);
for (gh = h->handlers; gh; gh = gh->next)
{
- if (!memcmp (type, gh->type->type, cp-type))
+ if (!memcmp (type, gh->type->type, cp-type) &&
+ gh->type->type[cp-type] == '\0')
{
if (!gh->initFlag)
{
{
if (!gh->initFlag)
{
@@
-99,6
+100,7
@@
static void *grs_init(RecType recType)
grs_add_handler (h, recTypeGrs_tcl);
#endif
grs_add_handler (h, recTypeGrs_marc);
grs_add_handler (h, recTypeGrs_tcl);
#endif
grs_add_handler (h, recTypeGrs_marc);
+ grs_add_handler (h, recTypeGrs_marcxml);
#if HAVE_EXPAT_H
grs_add_handler (h, recTypeGrs_xml);
#endif
#if HAVE_EXPAT_H
grs_add_handler (h, recTypeGrs_xml);
#endif
@@
-361,10
+363,10
@@
static void index_xpath (data1_node *n, struct recExtractCtrl *p,
wrd->length = n->u.data.len;
if (p->flagShowRecords)
{
wrd->length = n->u.data.len;
if (p->flagShowRecords)
{
- printf("%*s data=", (level + 1) * 4, "");
+ printf("%*s XData:\"", (level + 1) * 4, "");
for (i = 0; i<wrd->length && i < 8; i++)
fputc (wrd->string[i], stdout);
for (i = 0; i<wrd->length && i < 8; i++)
fputc (wrd->string[i], stdout);
- printf("\n");
+ printf("\"\n");
}
else {
data1_termlist *tl;
}
else {
data1_termlist *tl;
@@
-646,7
+648,7
@@
static void index_termlist (data1_node *par, data1_node *n,
tlist->att->parent->name,
tlist->att->name, tlist->att->value,
tlist->source);
tlist->att->parent->name,
tlist->att->name, tlist->att->value,
tlist->source);
- printf (" data=\"");
+ printf (" XData:\"");
for (i = 0; i<wrd->length && i < 40; i++)
fputc (wrd->string[i], stdout);
fputc ('"', stdout);
for (i = 0; i<wrd->length && i < 40; i++)
fputc (wrd->string[i], stdout);
fputc ('"', stdout);
@@
-729,8
+731,8
@@
static int dumpkeys(data1_node *n, struct recExtractCtrl *p, int level,
printf("%*s", level * 4, "");
printf("Data: ");
if (n->u.data.len > 256)
printf("%*s", level * 4, "");
printf("Data: ");
if (n->u.data.len > 256)
- printf("'%.240s ... %.6s'\n", n->u.data.data,
- n->u.data.data + n->u.data.len-6);
+ printf("'%.170s ... %.70s'\n", n->u.data.data,
+ n->u.data.data + n->u.data.len-70);
else if (n->u.data.len > 0)
printf("'%.*s'\n", n->u.data.len, n->u.data.data);
else
else if (n->u.data.len > 0)
printf("'%.*s'\n", n->u.data.len, n->u.data.data);
else