no need to be as strict with table formats on various match constraints,
authorgilles <gilles@openbsd.org>
Mon, 19 Feb 2024 21:00:19 +0000 (21:00 +0000)
committergilles <gilles@openbsd.org>
Mon, 19 Feb 2024 21:00:19 +0000 (21:00 +0000)
this prevents the reuse of T_HASH tables in T_LIST contexts when the key
column actually makes sense by itself.

diff from Philipp (philipp+openbsd [at] bureaucracy [dot] de)

usr.sbin/smtpd/parse.y

index a7c3536..b4cf1f2 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: parse.y,v 1.298 2024/02/03 15:50:00 op Exp $  */
+/*     $OpenBSD: parse.y,v 1.299 2024/02/19 21:00:19 gilles Exp $      */
 
 /*
  * Copyright (c) 2008 Gilles Chehade <gilles@poolp.org>
@@ -778,7 +778,7 @@ HELO STRING {
                YYERROR;
        }
 
-       if (!table_check_use(t, T_DYNAMIC|T_LIST, K_SOURCE)) {
+       if (!table_check_use(t, T_DYNAMIC|T_LIST|T_HASH, K_SOURCE)) {
                yyerror("table \"%s\" may not be used for source lookups",
                    t->t_name);
                YYERROR;
@@ -1102,7 +1102,7 @@ negation TAG REGEX tables {
                YYERROR;
        }
 
-               if (!table_check_use(t, T_DYNAMIC|T_LIST, K_STRING|K_CREDENTIALS)) {
+       if (!table_check_use(t, T_DYNAMIC|T_LIST|T_HASH, K_STRING|K_CREDENTIALS)) {
                yyerror("table \"%s\" may not be used for auth lookups",
                    t->t_name);
                YYERROR;
@@ -1137,7 +1137,7 @@ negation TAG REGEX tables {
                YYERROR;
        }
 
-       if (!table_check_use(t, T_DYNAMIC|T_LIST, K_MAILADDR)) {
+       if (!table_check_use(t, T_DYNAMIC|T_LIST|T_HASH, K_MAILADDR)) {
                yyerror("table \"%s\" may not be used for mail-from lookups",
                    t->t_name);
                YYERROR;
@@ -1172,7 +1172,7 @@ negation TAG REGEX tables {
                YYERROR;
        }
 
-       if (!table_check_use(t, T_DYNAMIC|T_LIST, K_MAILADDR)) {
+       if (!table_check_use(t, T_DYNAMIC|T_LIST|T_HASH, K_MAILADDR)) {
                yyerror("table \"%s\" may not be used for rcpt-to lookups",
                    t->t_name);
                YYERROR;
@@ -1330,7 +1330,7 @@ negation TAG REGEX tables {
                YYERROR;
        }
 
-               if (!table_check_use(t, T_DYNAMIC|T_LIST, K_STRING|K_CREDENTIALS)) {
+       if (!table_check_use(t, T_DYNAMIC|T_LIST, K_STRING|K_CREDENTIALS)) {
                yyerror("table \"%s\" may not be used for from lookups",
                    t->t_name);
                YYERROR;
@@ -1372,7 +1372,7 @@ negation TAG REGEX tables {
                YYERROR;
        }
 
-       if (!table_check_use(t, T_DYNAMIC|T_LIST, K_MAILADDR)) {
+       if (!table_check_use(t, T_DYNAMIC|T_LIST|T_HASH, K_MAILADDR)) {
                yyerror("table \"%s\" may not be used for from lookups",
                    t->t_name);
                YYERROR;
@@ -1469,7 +1469,7 @@ negation TAG REGEX tables {
                YYERROR;
        }
 
-       if (!table_check_use(t, T_DYNAMIC|T_LIST, K_MAILADDR)) {
+       if (!table_check_use(t, T_DYNAMIC|T_LIST|T_HASH, K_MAILADDR)) {
                yyerror("table \"%s\" may not be used for for lookups",
                    t->t_name);
                YYERROR;