Skip to content

Commit 088eee4

Browse files
FIX: safely unhook zend_ast_process across Apache graceful restarts (#295)
1 parent 5d4dbbc commit 088eee4

File tree

9 files changed

+17
-17
lines changed

9 files changed

+17
-17
lines changed

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,25 +38,25 @@ Prerequisites:
3838

3939
##### x86_64
4040
```
41-
rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/download/v1.3.5/aikido-php-firewall.x86_64.rpm
41+
rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/download/v1.3.6/aikido-php-firewall.x86_64.rpm
4242
```
4343

4444
##### arm64 / aarch64
4545
```
46-
rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/download/v1.3.5/aikido-php-firewall.aarch64.rpm
46+
rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/download/v1.3.6/aikido-php-firewall.aarch64.rpm
4747
```
4848

4949
#### For Debian-based Systems (Debian, Ubuntu)
5050

5151
##### x86_64
5252
```
53-
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.5/aikido-php-firewall.x86_64.deb
53+
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.6/aikido-php-firewall.x86_64.deb
5454
dpkg -i -E ./aikido-php-firewall.x86_64.deb
5555
```
5656

5757
##### arm64 / aarch64
5858
```
59-
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.5/aikido-php-firewall.aarch64.deb
59+
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.6/aikido-php-firewall.aarch64.deb
6060
dpkg -i -E ./aikido-php-firewall.aarch64.deb
6161
```
6262

docs/aws-elastic-beanstalk.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
```
55
commands:
66
aikido-php-firewall:
7-
command: "rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/download/v1.3.5/aikido-php-firewall.x86_64.rpm"
7+
command: "rpm -Uvh --oldpackage https://github.com/AikidoSec/firewall-php/releases/download/v1.3.6/aikido-php-firewall.x86_64.rpm"
88
ignoreErrors: true
99
1010
files:

docs/fly-io.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ Create a script to install the Aikido PHP Firewall during deployment:
3232
#!/usr/bin/env bash
3333
cd /tmp
3434

35-
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.5/aikido-php-firewall.x86_64.deb
35+
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.6/aikido-php-firewall.x86_64.deb
3636
dpkg -i -E ./aikido-php-firewall.x86_64.deb
3737
```
3838

docs/laravel-forge.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ cd /tmp
2121
2222
# Install commands from the "Manual install" section below, based on your OS
2323
24-
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.5/aikido-php-firewall.x86_64.deb
24+
curl -L -O https://github.com/AikidoSec/firewall-php/releases/download/v1.3.6/aikido-php-firewall.x86_64.deb
2525
dpkg -i -E ./aikido-php-firewall.x86_64.deb
2626
2727
# Restarting the php services in order to load the Aikido PHP Firewall

lib/agent/globals/constants.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package globals
22

33
const (
4-
Version = "1.3.5"
4+
Version = "1.3.6"
55
ConfigUpdatedAtMethod = "GET"
66
ConfigUpdatedAtAPI = "/config"
77
ConfigAPIMethod = "GET"

lib/php-extension/HookAst.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,14 +134,14 @@ void HookAstProcess() {
134134
}
135135

136136
void UnhookAstProcess() {
137-
if (!original_ast_process) {
138-
AIKIDO_LOG_WARN("Cannot unhook \"zend_ast_process\" without an original handler (was not previously hooked)!\n");
139-
return;
140-
}
141-
142137
AIKIDO_LOG_INFO("Unhooked \"zend_ast_process\" (original handler %p)!\n", original_ast_process);
143138

144-
zend_ast_process = original_ast_process;
139+
// As it's not mandatory to have a zend_ast_process installed, we need to ensure UnhookAstProcess() restores zend_ast_process even if the original was NULL
140+
// Only unhook if the current handler is still ours, avoiding clobbering others
141+
if (zend_ast_process == aikido_ast_process){
142+
zend_ast_process = original_ast_process;
143+
}
144+
145145
original_ast_process = nullptr;
146146
}
147147

lib/php-extension/include/php_aikido.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
extern zend_module_entry aikido_module_entry;
44
#define phpext_aikido_ptr &aikido_module_entry
55

6-
#define PHP_AIKIDO_VERSION "1.3.5"
6+
#define PHP_AIKIDO_VERSION "1.3.6"
77

88
#if defined(ZTS) && defined(COMPILE_DL_AIKIDO)
99
ZEND_TSRMLS_CACHE_EXTERN()

lib/request-processor/globals/globals.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,5 @@ var CloudConfigMutex sync.Mutex
1414
var MiddlewareInstalled bool
1515

1616
const (
17-
Version = "1.3.5"
17+
Version = "1.3.6"
1818
)

package/rpm/aikido.spec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Name: aikido-php-firewall
2-
Version: 1.3.5
2+
Version: 1.3.6
33
Release: 1
44
Summary: Aikido PHP Extension
55
License: GPL

0 commit comments

Comments
 (0)