summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsarthurdev <965089+sarthurdev@users.noreply.github.com>2025-06-21 22:58:54 +0200
committersarthurdev <965089+sarthurdev@users.noreply.github.com>2025-06-23 00:37:08 +0200
commit18de719b19032a5d576bb9b8e5cf3794860eefce (patch)
tree38c936a8be4aa01fc17875ac52f87edee7a4400c /src
parent8d3275d8b86d0bbb0d57442cceda9bb0208f72df (diff)
downloadipaddrcheck-18de719b19032a5d576bb9b8e5cf3794860eefce.tar.gz
ipaddrcheck-18de719b19032a5d576bb9b8e5cf3794860eefce.zip
T7557: Use PCRE2
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am4
-rw-r--r--src/ipaddrcheck_functions.c22
-rw-r--r--src/ipaddrcheck_functions.h4
3 files changed, 19 insertions, 11 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index 6098ae5..ce8ea59 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,7 +1,7 @@
AM_CFLAGS = --pedantic -Wall -Werror -std=c99 -O2
-AM_LDFLAGS =
+AM_CPPFLAGS = $(PCRE2_CFLAGS)
ipaddrcheck_SOURCES = ipaddrcheck.c ipaddrcheck_functions.c
-ipaddrcheck_LDADD = -lcidr -lpcre
+ipaddrcheck_LDADD = -lcidr $(PCRE2_LIBS)
bin_PROGRAMS = ipaddrcheck
diff --git a/src/ipaddrcheck_functions.c b/src/ipaddrcheck_functions.c
index d486d07..fb0e654 100644
--- a/src/ipaddrcheck_functions.c
+++ b/src/ipaddrcheck_functions.c
@@ -41,25 +41,31 @@
int regex_matches(const char* regex, const char* str)
{
- int offsets[1];
- pcre *re;
+ pcre2_code *re;
int rc;
- const char *error;
- int erroffset;
+ int out;
+ int error;
+ PCRE2_SIZE erroffset;
- re = pcre_compile(regex, 0, &error, &erroffset, NULL);
+ re = pcre2_compile((PCRE2_SPTR)regex, PCRE2_ZERO_TERMINATED, 0, &error, &erroffset, NULL);
assert(re != NULL);
- rc = pcre_exec(re, NULL, str, strlen(str), 0, 0, offsets, 1);
+ pcre2_match_data *match = pcre2_match_data_create_from_pattern(re, NULL);
+
+ rc = pcre2_match(re, (PCRE2_SPTR)str, strlen(str), 0, 0, match, NULL);
if( rc >= 0)
{
- return RESULT_SUCCESS;
+ out = RESULT_SUCCESS;
}
else
{
- return RESULT_FAILURE;
+ out = RESULT_FAILURE;
}
+
+ pcre2_match_data_free(match);
+ pcre2_code_free(re);
+ return out;
}
diff --git a/src/ipaddrcheck_functions.h b/src/ipaddrcheck_functions.h
index 9b5e55f..b717d74 100644
--- a/src/ipaddrcheck_functions.h
+++ b/src/ipaddrcheck_functions.h
@@ -23,11 +23,13 @@
#ifndef IPADDRCHECK_FUNCTIONS_H
#define IPADDRCHECK_FUNCTIONS_H
+#define PCRE2_CODE_UNIT_WIDTH 8
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <getopt.h>
-#include <pcre.h>
+#include <pcre2.h>
#include <libcidr.h>
#define INVALID_PROTO -1