int virNWFilterConfLayerInit(virHashIterator domUpdateCB);
void virNWFilterConfLayerShutdown(void);
-int virNWFilterParamConfLayerInit(void);
-void virNWFilterParamConfLayerShutdown(void);
-
# define virNWFilterReportError(conn, code, fmt...) \
(void)conn; \
virReportErrorHelper(NULL, VIR_FROM_NWFILTER, code, __FILE__, \
#include <config.h>
-#include <regex.h>
-
#include "internal.h"
#include "memory.h"
#define VIR_FROM_THIS VIR_FROM_NWFILTER
-/*
- * regular expressions for parameter names and values
- */
-static regex_t regex_nam;
-static regex_t regex_val;
-
-
static void
hashDealloc(void *payload, const char *name ATTRIBUTE_UNUSED)
{
#ifndef PROXY
+
+static bool
+isValidVarName(const char *var)
+{
+ return var[strspn(var, VALID_VARNAME)] == 0;
+}
+
+
+static bool
+isValidVarValue(const char *value)
+{
+ return value[strspn(value, VALID_VARVALUE)] == 0;
+}
+
+
virNWFilterHashTablePtr
virNWFilterParseParamAttributes(xmlNodePtr cur)
{
nam = virXMLPropString(cur, "name");
val = virXMLPropString(cur, "value");
if (nam != NULL && val != NULL) {
- if (regexec(®ex_nam, nam, 0, NULL, 0) != 0)
+ if (!isValidVarName(nam))
goto skip_entry;
- if (regexec(®ex_val, val, 0, NULL, 0) != 0)
+ if (!isValidVarValue(nam))
goto skip_entry;
if (virNWFilterHashTablePut(table, nam, val, 1)) {
VIR_FREE(nam);
return virBufferContentAndReset(&buf);
}
-
-
-int virNWFilterParamConfLayerInit(void) {
-
- if (regcomp(®ex_nam, "^[a-zA-Z0-9_]+$" ,
- REG_NOSUB|REG_EXTENDED) != 0)
- return 1;
-
- if (regcomp(®ex_val, "^[a-zA-Z0-9_.:]+$",
- REG_NOSUB|REG_EXTENDED) != 0) {
- regfree(®ex_nam);
- return 1;
- }
-
- return 0;
-}
-
-
-void virNWFilterParamConfLayerShutdown(void) {
- regfree(®ex_nam);
- regfree(®ex_val);
-}
virNWFilterHashTablePtr src,
virNWFilterHashTablePtr dest);
+# define VALID_VARNAME \
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"
+
+# define VALID_VARVALUE \
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.:"
+
#endif /* NWFILTER_PARAMS_H */