From bf49bf8356dbe2a79e9e9fcbdef9ca409374d072 Mon Sep 17 00:00:00 2001 From: Israel Alberto RV Date: Wed, 30 Dec 2020 21:35:52 -0600 Subject: [PATCH] Unit test fix (#868) * Fixed the failed unit testing; Improved the Dockerfile, again. * Fixed missing new line joiner in the Dockerfile. * Fixed the default Python version from 2 to 3. * Moved the installation of the nasm and golang packages to the setup script. * Fixed the extra quotes which fails the sudo check. * Added to the Git ignore file the output files assembled and linked in the test binaries. * Removed the output files from test binaries. * Added to the Git ignore file the virtual environment directory. * Added sudo to the remove and link the Python3 binary. * Added commands related to GO, to check why is failing. * Fixed the installation of GO, only install if not exists in Ubuntu. * Fixed the first test built in Assembler. Checks if it is working in GitHub. * Fixed the problem with all the assembler tests; Extracted the asserts into methods, avoiding duplicates. * Fixed some test, should be fail the Travis tests. * Fixed one test for Travis. * Fixed the asserts, now find all ecpected items into the output. * Fixed the split message, joined again. * Fixed the last error test for loads binary. * Fixed one missing number in the comparison. * Fixed the first Lint errors. * Added comment in the Dockerfile. The commented line about `git submodule`. https://github.com/pwndbg/pwndbg/pull/868#discussion_r549075767 * Removed NASM and Go from the setup. Created a new bash script to install them and added to the Dockerfile. https://github.com/pwndbg/pwndbg/pull/868/files#r549075931 https://github.com/pwndbg/pwndbg/pull/868/files#r549076078 * Added the setup script in the GitHub test workflow. https://github.com/pwndbg/pwndbg/pull/868/files#r549075931 https://github.com/pwndbg/pwndbg/pull/868/files#r549076078 * Testing the emulate cases. It should be fail. I commented the emulation for the address 0x401000. https://github.com/pwndbg/pwndbg/pull/868#discussion_r549111511 * Fixed the different start addresses in the assembler test. https://github.com/pwndbg/pwndbg/pull/868#discussion_r549111511 https://github.com/pwndbg/pwndbg/pull/868#discussion_r549075485 * Experimenting with the python location. Commented the remove python binary and added some logs. https://github.com/pwndbg/pwndbg/pull/868#discussion_r549076170 * Removed the commands about delete Python and link the Python3. https://github.com/pwndbg/pwndbg/pull/868#discussion_r549076170 --- .github/workflows/lint.yml | 1 - .github/workflows/tests.yml | 1 + .gitignore | 4 ++ Dockerfile | 29 +++++++--- pwndbg/__init__.py | 2 +- pwndbg/commands/comments.py | 1 + pwndbg/commands/nearpc.py | 4 +- setup-test-tools.sh | 44 +++++++++++++++ setup.sh | 16 +++--- tests.sh | 7 ++- tests/binaries/emulate_disasm.out | Bin 736 -> 0 bytes tests/binaries/emulate_disasm_loop.out | Bin 768 -> 0 bytes tests/binaries/heap_bugs.out | Bin 24864 -> 0 bytes tests/binaries/makefile | 6 +- tests/binaries/reference-binary.out | Bin 10840 -> 0 bytes tests/test_emulate.py | 40 +++++++------ tests/test_heap.py | 12 ++-- tests/test_loads.py | 75 ++++++++++++------------- 18 files changed, 154 insertions(+), 88 deletions(-) create mode 100755 setup-test-tools.sh delete mode 100755 tests/binaries/emulate_disasm.out delete mode 100755 tests/binaries/emulate_disasm_loop.out delete mode 100755 tests/binaries/heap_bugs.out delete mode 100755 tests/binaries/reference-binary.out diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 697e8653b..a3a5a48c9 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -27,4 +27,3 @@ jobs: git diff-index --quiet HEAD -- pwndbg tests isort --check-only --diff pwndbg tests python3 -m py_compile $(git ls-files 'pwndbg/*.py') - diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 737816c6a..bc7498b64 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,6 +19,7 @@ jobs: - name: Install dependencies run: | ./setup.sh --user + ./setup-test-tools.sh --user - name: Python version info run: | diff --git a/.gitignore b/.gitignore index b61b993c6..eb9ceba7f 100644 --- a/.gitignore +++ b/.gitignore @@ -61,7 +61,11 @@ npm-debug.log # PyCharm project files .idea/ +venv/ # PyTest files .pytest_cache/ tests/.pytest_cache/ +tests/binaries/*.o +tests/binaries/*.out +tests/binaries/gosample.x* diff --git a/Dockerfile b/Dockerfile index 05c38639e..2165b0df4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,20 +9,35 @@ # FROM ubuntu:20.04 +WORKDIR /pwndbg + +ENV LANG en_US.utf8 ENV TZ=America/New_York RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ echo $TZ > /etc/timezone && \ apt-get update && \ - apt-get -y install vim golang - -ADD . /pwndbg/ + apt-get install -y locales && \ + rm -rf /var/lib/apt/lists/* && \ + localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 && \ + apt-get update && \ + apt-get install -y vim -RUN cd /pwndbg && \ +ADD ./setup.sh /pwndbg/ +ADD ./requirements.txt /pwndbg/ +# The `git submodule` is commented because it refreshes all the sub-modules in the project +# but at this time we only need the essentials for the set up. It will execute at the end. +RUN sed -i "s/^git submodule/#git submodule/" ./setup.sh && \ DEBIAN_FRONTEND=noninteractive ./setup.sh +# Comment these lines if you won't run the tests. +ADD ./setup-test-tools.sh /pwndbg/ +RUN ./setup-test-tools.sh + RUN echo "source /pwndbg/gdbinit.py" >> ~/.gdbinit.py && \ echo "PYTHON_MINOR=$(python3 -c "import sys;print(sys.version_info.minor)")" >> /root/.bashrc && \ echo "PYTHON_PATH=\"/usr/local/lib/python3.${PYTHON_MINOR}/dist-packages/bin\"" >> /root/.bashrc && \ - echo "export PATH=$PATH:$PYTHON_PATH" >> /root/.bashrc && \ - cat ~/.gdbinit.py | grep -i source && \ - cat /root/.bashrc | grep -i python + echo "export PATH=$PATH:$PYTHON_PATH" >> /root/.bashrc + +ADD . /pwndbg/ + +RUN git submodule update --init --recursive diff --git a/pwndbg/__init__.py b/pwndbg/__init__.py index a649c71a9..7a7d8479b 100755 --- a/pwndbg/__init__.py +++ b/pwndbg/__init__.py @@ -15,6 +15,7 @@ import pwndbg.commands.aslr import pwndbg.commands.auxv import pwndbg.commands.canary import pwndbg.commands.checksec +import pwndbg.commands.comments import pwndbg.commands.config import pwndbg.commands.context import pwndbg.commands.cpsr @@ -50,7 +51,6 @@ import pwndbg.commands.vmmap import pwndbg.commands.windbg import pwndbg.commands.xinfo import pwndbg.commands.xor -import pwndbg.commands.comments import pwndbg.constants import pwndbg.disasm import pwndbg.disasm.arm diff --git a/pwndbg/commands/comments.py b/pwndbg/commands/comments.py index 7f8a44b55..d35494f06 100644 --- a/pwndbg/commands/comments.py +++ b/pwndbg/commands/comments.py @@ -1,4 +1,5 @@ import argparse + import pwndbg.commands from pwndbg.color import message diff --git a/pwndbg/commands/nearpc.py b/pwndbg/commands/nearpc.py index 1a9099150..d6520c4b6 100644 --- a/pwndbg/commands/nearpc.py +++ b/pwndbg/commands/nearpc.py @@ -2,9 +2,7 @@ # -*- coding: utf-8 -*- import argparse -import codecs -import gdb from capstone import * import pwndbg.arguments @@ -13,6 +11,7 @@ import pwndbg.color.context as C import pwndbg.color.disasm as D import pwndbg.color.nearpc as N import pwndbg.color.theme +import pwndbg.commands.comments import pwndbg.config import pwndbg.disasm import pwndbg.functions @@ -22,7 +21,6 @@ import pwndbg.strings import pwndbg.symbol import pwndbg.ui import pwndbg.vmmap -import pwndbg.commands.comments from pwndbg.color import message diff --git a/setup-test-tools.sh b/setup-test-tools.sh new file mode 100755 index 000000000..a2b053d1b --- /dev/null +++ b/setup-test-tools.sh @@ -0,0 +1,44 @@ +#!/bin/bash -e + +echo "# --------------------------------------" +echo "# Install testing tools." +echo "# Only works with Ubuntu / APT." +echo "# --------------------------------------" + +# If we are a root in a Docker container and `sudo` doesn't exist +# lets overwrite it with a function that just executes things passed to sudo +# (yeah it won't work for sudo executed with flags) +if [ -f /.dockerenv ] && ! hash sudo 2>/dev/null && whoami | grep root; then + sudo() { + ${*} + } +fi + +linux() { + uname | grep -i Linux &>/dev/null +} + +install_apt() { + sudo apt-get update || true + sudo apt-get install -y nasm + test -f /usr/bin/go || sudo apt-get install -y golang +} + +if linux; then + distro=$(grep "^ID=" /etc/os-release | cut -d'=' -f2 | sed -e 's/"//g') + + case $distro in + "ubuntu") + install_apt + ;; + *) # we can add more install command for each distros. + echo "\"$distro\" is not supported distro. Will search for 'apt' or 'dnf' package managers." + if hash apt; then + install_apt + else + echo "\"$distro\" is not supported and your distro don't have apt or dnf that we support currently." + exit + fi + ;; + esac +fi diff --git a/setup.sh b/setup.sh index 52c9784ef..775774d2c 100755 --- a/setup.sh +++ b/setup.sh @@ -6,7 +6,7 @@ set -ex # (yeah it won't work for sudo executed with flags) if [ -f /.dockerenv ] && ! hash sudo 2>/dev/null && whoami | grep root; then sudo() { - $* + ${*} } fi @@ -20,12 +20,12 @@ osx() { install_apt() { sudo apt-get update || true - sudo apt-get -y install git gdb python3-dev python3-pip python3-setuptools libglib2.0-dev libc6-dbg + sudo apt-get install -y git gdb python3-dev python3-pip python3-setuptools libglib2.0-dev libc6-dbg if uname -m | grep x86_64 > /dev/null; then sudo dpkg --add-architecture i386 || true sudo apt-get update || true - sudo apt-get -y install libc6-dbg:i386 || true + sudo apt-get install -y libc6-dbg:i386 || true fi } @@ -104,7 +104,7 @@ if linux; then install_emerge if ! hash sudo 2>/dev/null && whoami | grep root; then sudo() { - $* + ${*} } fi ;; @@ -123,7 +123,7 @@ if linux; then fi if ! hash gdb; then - echo 'Could not find gdb in $PATH' + echo "Could not find gdb in $PATH" exit fi @@ -144,14 +144,14 @@ fi # Make sure that pip is available if ! ${PYTHON} -m pip -V; then - ${PYTHON} -m ensurepip ${INSTALLFLAGS} --upgrade + ${PYTHON} -m ensurepip "${INSTALLFLAGS}" --upgrade fi # Upgrade pip itself -${PYTHON} -m pip install ${INSTALLFLAGS} --upgrade pip +${PYTHON} -m pip install "${INSTALLFLAGS}" --upgrade pip # Install Python dependencies -${PYTHON} -m pip install ${INSTALLFLAGS} -Ur requirements.txt +${PYTHON} -m pip install "${INSTALLFLAGS}" -Ur requirements.txt # Load Pwndbg into GDB on every launch. if ! grep pwndbg ~/.gdbinit &>/dev/null; then diff --git a/tests.sh b/tests.sh index cfc4e08b0..779938253 100755 --- a/tests.sh +++ b/tests.sh @@ -1,6 +1,8 @@ #!/bin/bash -cd tests/binaries && make && cd ../.. +cd ./tests/binaries || exit 1 +make clean all || exit 2 +cd ../../ # NOTE: We run tests under GDB sessions and because of some cleanup/tests dependencies problems # we decided to run each test in a separate GDB session @@ -11,7 +13,6 @@ tests_failed=0 for test_case in ${TESTS_LIST}; do PWNDBG_LAUNCH_TEST="${test_case}" PWNDBG_DISABLE_COLORS=1 gdb --silent --nx --nh --command gdbinit.py --command pytests_launcher.py --eval-command quit - exit_status=$? if [ ${exit_status} -eq 0 ]; then @@ -28,6 +29,6 @@ echo "*********************************" echo "Tests passed or skipped: ${tests_passed_or_skipped}" echo "Tests failed: ${tests_failed}" -if [ ${tests_failed} -ne 0 ]; then +if [ "${tests_failed}" -ne 0 ]; then exit 1 fi diff --git a/tests/binaries/emulate_disasm.out b/tests/binaries/emulate_disasm.out deleted file mode 100755 index f9c9720d7a78cf500bd46dc2b278507c38a2791e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmbV|u};G<5QhJxDJol$7!VA!OE)?&F;!ha47`JJ6icm?Fw{n(U0R6_9s3A83h%?j z6TsQNOVubWSc<>WNRtGzQcU302Gd~09r!pz=;V$vQ*@DqY&Rrjla9zO z+d^Q#PQ+KT-yaz*qC}n-WUp)++1t!aWJ=lCuWQ8rGBzaM{hww&kd(M=cxkP2}Hr*>%CpTpDT{P? zT(K<(blCAQ{Cwq;hA-QX2ASXQXXm|(%Ri}l(V)}io|16ajPUg%TJRtz0pv9CPl&W@ z=5*L!VN9&7Q=%?k^?U5ED|sa8!%W*m#Z#kAs%DGDeU}J~&8G8PC^a!g8LKl3mBiX= zf_V&d%~NXigwSRl?}XXp(Uv#*A3LIU_hvghM&5JD`jAneErikah854rHG3OI_h%#e kTCDdOcM08IwZ?8RRo_FgvR&vsVs-s*96TcpP0kjG^CIA2c diff --git a/tests/binaries/heap_bugs.out b/tests/binaries/heap_bugs.out deleted file mode 100755 index d9fad5ccda696843ca9a5fa13169515942b2f626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24864 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 diff --git a/tests/binaries/makefile b/tests/binaries/makefile index 5cb96781b..1a945cdc6 100644 --- a/tests/binaries/makefile +++ b/tests/binaries/makefile @@ -37,7 +37,7 @@ all: $(LINKED) $(LINKED_ASM) $(COMPILED_GO) %.out : %.c @echo "[+] Building '$@'" - @$(CC) $(CFLAGS) $(EXTRA_FLAGS) -o $@ $? $(LDFLAGS) + @$(CC) $(CFLAGS) $(EXTRA_FLAGS) -w -o $@ $? $(LDFLAGS) %.o : %.asm @echo "[+] Building '$@'" @@ -45,7 +45,7 @@ all: $(LINKED) $(LINKED_ASM) $(COMPILED_GO) %.out : %.o @echo "[+] Linking '$@'" - @$(LD) -o $@ $? + @$(LD) -Ttext 0x400080 -o $@ $? %.x86 : %.x86.go @echo "[+] Building '$@'" @@ -75,7 +75,7 @@ heap_bugs: heap_bugs.c clean : @echo "[+] Cleaning stuff" - @rm -f $(COMPILED) $(LINKED) $(COMPILED_GO) + @rm -f $(COMPILED) $(LINKED) $(COMPILED_ASM) $(LINKED_ASM) $(COMPILED_GO) reference-binary.out: EXTRA_FLAGS := -Dexample=1 diff --git a/tests/binaries/reference-binary.out b/tests/binaries/reference-binary.out deleted file mode 100755 index 73e937772e319d83adf5d9f3c374d3197a7539e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10840 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 diff --git a/tests/test_emulate.py b/tests/test_emulate.py index 1b450b5ea..1374f9376 100644 --- a/tests/test_emulate.py +++ b/tests/test_emulate.py @@ -1,4 +1,3 @@ - import tests from pwndbg.commands.nearpc import emulate from pwndbg.commands.nearpc import nearpc @@ -15,8 +14,8 @@ def test_emulate_disasm(start_binary): """ start_binary(EMULATE_DISASM_BINARY) - assert emulate(to_string=True) == [ - ' ► 0x400080 <_start> jmp label <0x400083>', + disasm_with_emu_0x400080 = [ + ' ► 0x400080 <_start> jmp label