]> git.pond.sub.org Git - empserver/commitdiff
empdump failed to catch some invalid column names
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 8 May 2011 10:12:09 +0000 (12:12 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 25 Jun 2011 14:50:05 +0000 (16:50 +0200)
It missed those with more flags than just NSC_EXTRA set: table sect
name uid, table nat names passwd, xorg, yorg, contacts, rejects.
Since xundump() doesn't provide space for these, the bug could lead to
buffer overruns.  Fixes flawed commit 726a8e3d, v4.3.12.

src/lib/common/xundump.c

index 4f1ad9994a67264e5a35311d879c8a43385f233a..54448f6474c33bff341b5c46dcffca62bf2e1a82 100644 (file)
@@ -352,7 +352,7 @@ deffld(int fldno, char *name, int idx)
     if (res < 0)
        return gripe("Header %s of field %d is %s", name, fldno + 1,
                     res == M_NOTUNIQUE ? "ambiguous" : "unknown");
-    if (ca[res].ca_flags == NSC_EXTRA || CANT_HAPPEN(ca[res].ca_get))
+    if ((ca[res].ca_flags & NSC_EXTRA) || CANT_HAPPEN(ca[res].ca_get))
        return gripe("Extraneous header %s in field %d", name, fldno + 1);
     if (ca[res].ca_type != NSC_STRINGY && ca[res].ca_len != 0) {
        if (idx < 0)