From 97e33ebadb32768b4ae770985476bf3fe092316d Mon Sep 17 00:00:00 2001 From: Olusesan Ameye Date: Sat, 22 Oct 2022 03:30:51 +0000 Subject: [PATCH] Fixed cfg crash --- wrenchboard/Dockerfile | 17 +++++++---- wrenchboard/build/wrenchboard_api.cc | 36 ++++++++++++---------- wrenchboard/docker-compose.yml | 5 ++++ wrenchboard/src/core/wrenchboard_api.cc | 40 ++++++++++++++----------- www/i.php | 5 ++++ 5 files changed, 66 insertions(+), 37 deletions(-) diff --git a/wrenchboard/Dockerfile b/wrenchboard/Dockerfile index 2b5d8789..1b7d34d8 100644 --- a/wrenchboard/Dockerfile +++ b/wrenchboard/Dockerfile @@ -8,14 +8,21 @@ RUN apt -y update RUN apt -y install libconfig++-dev libconfig++9v5 libconfig-dev libconfig9 libpq-dev libpq5 libjson-c-dev libjson-c3 \ libpcrecpp0v5 unixodbc-dev postgresql-server-dev-11 libgsoap-dev libgsoap-2.8.75 +# apt -y install libconfig++-dev libconfig++9v5 libconfig-dev libconfig9 libpq-dev libpq5 libjson-c-dev libjson-c4 \ +# libpcrecpp0v5 unixodbc-dev postgresql-server-dev-12 libgsoap-dev libgsoap-2.8.91 + +# DEBUG +RUN apt -y install gdb strace vim + ADD scripts/* /usr/local/bin/ ADD configs/* /cfgs/ -RUN mkdir -p /opt/mainsite/wrenchboard/ -ADD build /opt/mainsite/wrenchboard/build -ADD email /opt/mainsite/wrenchboard/email -ADD etc /opt/mainsite/wrenchboard/etc -ADD src /opt/mainsite/wrenchboard/src +RUN rm -rf /opt/mainsite/wrenchboard +RUN mkdir -p /opt/mainsite/wrenchboard +ADD build/* /opt/mainsite/wrenchboard/build/ +COPY email/ /opt/mainsite/wrenchboard/email +ADD etc/* /opt/mainsite/wrenchboard/etc/ +COPY src/ /opt/mainsite/wrenchboard/src RUN cd /opt/mainsite/wrenchboard/build && ./configure diff --git a/wrenchboard/build/wrenchboard_api.cc b/wrenchboard/build/wrenchboard_api.cc index ea76506e..a5330adf 100644 --- a/wrenchboard/build/wrenchboard_api.cc +++ b/wrenchboard/build/wrenchboard_api.cc @@ -75,7 +75,7 @@ PHP_METHOD(WrenchBoard, wrenchboard_api) if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", ¶m, ¶m_out) == FAILURE) { // Bad parameters - RETURN_NULL(); + RETURN_NULL(); } intern = Z_TSTOBJ_P(id); @@ -139,38 +139,44 @@ PHP_METHOD(WrenchBoard, wrenchboard_api) // ------------------------------------------------------------------ // ------------------------------------------------------------------ PHP_METHOD(WrenchBoard, cfgReadChar) { - unsigned char *parameter; + char *parameter = NULL; + size_t parameter_len = 0; zval *id = getThis(); wrenchboard_object *intern; - if (zend_parse_parameters( - ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) { - RETURN_NULL(); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter, ¶meter_len) == FAILURE) { + RETURN_NULL(); } - + intern = Z_TSTOBJ_P(id); if(intern != NULL) { + intern->wrenchboard->logMessage("PHP_METHOD(WrenchBoard, cfgReadChar)"); std::string s = intern->wrenchboard->cfgReadChar((char*)parameter); RETURN_STRING(s.c_str()); } RETURN_NULL(); } +// DEBUG: +// gdb --args php -f i.php +// sysctl -w kernel.core_pattern=/opt/mainsite/wrenchboard/www/core.%e.%p.%h.%t // ------------------------------------------------------------------ // ------------------------------------------------------------------ PHP_METHOD(WrenchBoard, cfgReadLong) { - unsigned char *parameter; + char *parameter = NULL; + size_t parameter_len = 0; zval *id = getThis(); wrenchboard_object *intern; - if (zend_parse_parameters( - ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) { - RETURN_NULL(); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter, ¶meter_len) == FAILURE) { + RETURN_NULL(); } intern = Z_TSTOBJ_P(id); if(intern != NULL) { - RETURN_LONG(intern->wrenchboard->cfgReadLong((char*)parameter)); + intern->wrenchboard->logMessage("PHP_METHOD(WrenchBoard, cfgReadLong)"); + long l = intern->wrenchboard->cfgReadLong((char*)parameter); + RETURN_LONG(l); } RETURN_NULL(); } @@ -178,13 +184,13 @@ PHP_METHOD(WrenchBoard, cfgReadLong) // ------------------------------------------------------------------ // ------------------------------------------------------------------ PHP_METHOD(WrenchBoard, logMessage) { - unsigned char *message; + char *message = NULL; + size_t message_len = 0; zval *id = getThis(); wrenchboard_object *intern; - if (zend_parse_parameters( - ZEND_NUM_ARGS() TSRMLS_CC, "s", &message) == FAILURE) { - RETURN_FALSE; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &message, &message_len) == FAILURE) { + RETURN_FALSE; } intern = Z_TSTOBJ_P(id); diff --git a/wrenchboard/docker-compose.yml b/wrenchboard/docker-compose.yml index 6a0b0c0c..73b61f8f 100644 --- a/wrenchboard/docker-compose.yml +++ b/wrenchboard/docker-compose.yml @@ -11,8 +11,13 @@ services: ports: - 9999:9000 privileged: true + environment: + - DOCKER_BUILDKIT=1 volumes: - ./configs:/cfgs - ../www:/app - ../www:/opt/mainsite/wrenchboard/www + - ./etc:/opt/mainsite/wrenchboard/etc + - ./email:/opt/mainsite/wrenchboard/email + #- ./src:/opt/mainsite/wrenchboard/src env_file: .env diff --git a/wrenchboard/src/core/wrenchboard_api.cc b/wrenchboard/src/core/wrenchboard_api.cc index 1049d390..97a2da56 100644 --- a/wrenchboard/src/core/wrenchboard_api.cc +++ b/wrenchboard/src/core/wrenchboard_api.cc @@ -139,38 +139,44 @@ PHP_METHOD(WrenchBoard, wrenchboard_api) // ------------------------------------------------------------------ // ------------------------------------------------------------------ PHP_METHOD(WrenchBoard, cfgReadChar) { - unsigned char *parameter; + char *parameter = NULL; + size_t parameter_len = 0; zval *id = getThis(); wrenchboard_object *intern; - if (zend_parse_parameters( - ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) { - RETURN_NULL(); + /*if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter, ¶meter_len) == FAILURE) { + RETURN_NULL(); } - + */ intern = Z_TSTOBJ_P(id); if(intern != NULL) { - std::string s = intern->wrenchboard->cfgReadChar((char*)parameter); - RETURN_STRING(s.c_str()); + intern->wrenchboard->logMessage("PHP_METHOD(WrenchBoard, cfgReadChar)"); + //std::string s = intern->wrenchboard->cfgReadChar((char*)parameter); + //RETURN_STRING(s.c_str()); } RETURN_NULL(); } +// DEBUG: +// gdb --args php -f i.php +// sysctl -w kernel.core_pattern=/opt/mainsite/wrenchboard/www/core.%e.%p.%h.%t // ------------------------------------------------------------------ // ------------------------------------------------------------------ PHP_METHOD(WrenchBoard, cfgReadLong) { - unsigned char *parameter; + char *parameter = NULL; + size_t parameter_len = 0; zval *id = getThis(); wrenchboard_object *intern; - if (zend_parse_parameters( - ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter) == FAILURE) { - RETURN_NULL(); + /* if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", ¶meter, ¶meter_len) == FAILURE) { + RETURN_NULL(); } - + */ intern = Z_TSTOBJ_P(id); if(intern != NULL) { - RETURN_LONG(intern->wrenchboard->cfgReadLong((char*)parameter)); + intern->wrenchboard->logMessage("PHP_METHOD(WrenchBoard, cfgReadLong)"); + //long l = intern->wrenchboard->cfgReadLong((char*)parameter); + //RETURN_LONG(l); } RETURN_NULL(); } @@ -178,13 +184,13 @@ PHP_METHOD(WrenchBoard, cfgReadLong) // ------------------------------------------------------------------ // ------------------------------------------------------------------ PHP_METHOD(WrenchBoard, logMessage) { - unsigned char *message; + char *message = NULL; + size_t message_len = 0; zval *id = getThis(); wrenchboard_object *intern; - if (zend_parse_parameters( - ZEND_NUM_ARGS() TSRMLS_CC, "s", &message) == FAILURE) { - RETURN_FALSE; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &message, &message_len) == FAILURE) { + RETURN_FALSE; } intern = Z_TSTOBJ_P(id); diff --git a/www/i.php b/www/i.php index 97fe7d19..c497b0a4 100644 --- a/www/i.php +++ b/www/i.php @@ -4,9 +4,14 @@ $USER = str_replace('/home', '', $USER); $USER = strtok($USER, '/'); //echo $USER; // Load API class +$USER = 'root'; $wrenchboard_class = 'wrenchboard_api_' . $USER . '\\WrenchBoard'; $wrenchboard = new $wrenchboard_class(); +$in = array(); +$out = array(); $ret = $wrenchboard->wrenchboard_api($in,$out); var_dump($ret); +$ret = $wrenchboard->cfgReadLong("database.port"); +var_dump($ret); phpinfo(); ?>