Faulty regex consumes all memory and causes issues with pihole -q

As it seem to come down to awk I checked what was installed:

nanopi@nanopi:~$ apt -s install awk
NOTE: This is only a simulation!
      apt needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package awk is a virtual package provided by:
  original-awk:armhf 2012-12-20-6
  mawk:armhf 1.3.3-17+b3
  gawk:armhf 1:4.2.1+dfsg-1
  original-awk 2012-12-20-6
  mawk 1.3.3-17+b3
  gawk 1:4.2.1+dfsg-1
You should explicitly select one to install.
nanopi@nanopi:~$ sudo apt-show-versions awk
awk not installed (not available)
nanopi@nanopi:~$ apt-show-versions mawk
mawk:arm64 1.3.3-17+b3 installed: No available version in archive
nanopi@nanopi:~$ apt-show-versions gawk
gawk not installed (not available)

running the awk explicite with mawk

nanopi@nanopi:~$ mawk 'NR==FNR{regexps[$0];next}{for (r in regexps)if($0 ~ r)print r}' <(echo "(\.|^)*\.services\.generalmagic\.com$") <(echo "me.services.generalmagic.com")
Killed

BUT installing gawk

nanopi@nanopi:~$ sudo apt install gawk

nanopi@nanopi:~$ gawk 'NR==FNR{regexps[$0];next}{for (r in regexps)if($0 ~ r)print r}' <(echo "(\.|^)*\.services\.generalmagic\.com$") <(echo "me.services.generalmagic.com")
(\.|^)*\.services\.generalmagic\.com$
nanopi@nanopi:~$ pihole -q gstatic
 Match found in exact whitelist
   fonts.gstatic.com
 Match found in https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts:
   csi.gstatic.com 
 Match found in https://hosts-file.net/ad_servers.txt:
   csi.gstatic.com 
   p2-aahhyknavsj2m-wtnlrzkba6lht33q-if-v6exp3-v4.metric.gstatic.com 
   p2-f6rp6piuxns4u-uzq4vp76bu3w2tso-if-v6exp3-v4.metric.gstatic.com 
   p2-n3zurhre4jjvk-can5rb2f2a4urcxh-if-v6exp3-v4.metric.gstatic.com 
   p4-ajvwyt5lpjazy-us7r2dzqcjsqh7pt-164149-i1-v6exp3-v4.metric.gstatic.com 
   p4-ajvwyt5lpjazy-us7r2dzqcjsqh7pt-164149-i2-v6exp3-ds.metric.gstatic.com 
   p4-ajvwyt5lpjazy-us7r2dzqcjsqh7pt-164149-s1-v6exp3-v4.metric.gstatic.com 
   p4-ajvwyt5lpjazy-us7r2dzqcjsqh7pt-if-v6exp3-v4.metric.gstatic.com 
   p5-lj5aujgj7jl7w-r2pmxqvndsgx2im2-931517-i1-v6exp3-v4.metric.gstatic.com 
   p5-lj5aujgj7jl7w-r2pmxqvndsgx2im2-931517-i2-v6exp3-ds.metric.gstatic.com 
   s6.netlogstatic.com 
   v6exp3-ds.metric.gstatic.com 
   v6exp3-v4.metric.gstatic.com 
 Match found in https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardMobileAds.txt:
   csi.gstatic.com 
 Match found in https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/AdguardDNS.txt:
   metric.gstatic.com 
   diagnose.igstatic.com 
 Match found in https://raw.githubusercontent.com/r-a-y/mobile-hosts/master/EasyPrivacy3rdParty.txt:
   csi.gstatic.com 
   diagnose.igstatic.com 
 Match found in https://www.github.developerdan.com/hosts/lists/ads-and-tracking-extended.txt:
   connectivitycheck.gstatic.comwf.cbarsrv.com 
   gstaticadssl.l.google.com 
   metric.gstatic.com 
   anycast.metric.gstatic.com 
   anycast-stb.metric.gstatic.com 
   anycast1.metric.gstatic.com 
   anycast1-stb.metric.gstatic.com 
   anycast2.metric.gstatic.com 
   anycast2-stb.metric.gstatic.com 
   ds.metric.gstatic.com 
   s-v6exp1-ds.metric.gstatic.com 
   s-v6exp1-v4.metric.gstatic.com 
   stbcast.metric.gstatic.com 
   stbcast-stb.metric.gstatic.com 
   stbcast2.metric.gstatic.com 
   stbcast2-stb.metric.gstatic.com 
   stbcast3.metric.gstatic.com 
   stbcast3-stb.metric.gstatic.com 
   stbcast4.metric.gstatic.com 
   stbcast4-stb.metric.gstatic.com 
   stbcast5.metric.gstatic.com 
   stbcast5-stb.metric.gstatic.com 
   test-ipv6-dot-com-v6exp3-v4.metric.gstatic.com 
   unicast.metric.gstatic.com 
   unicast-stb.metric.gstatic.com 
   unicast2.metric.gstatic.com 
   unicast2-stb.metric.gstatic.com 
   v4.metric.gstatic.com 
   v6exp3-ds.metric.gstatic.com 
   v6exp3-v4.metric.gstatic.com 

NO ERRORS!

There must be a difference between mawk and gawk resulting in the error we've seen.

Is pihole checking for awk during installation? Maybe extend to gawk?

1 Like