Skip to content

[Bug] Stack Overflow due to Deep Recursion in tinyexpr Parser #134

@oneafter

Description

@oneafter

Description

We discovered a stack overflow vulnerability in tinyexpr. The crash is caused by unbounded recursion in the expression parser when processing deeply nested mathematical expressions or lists. A maliciously crafted input with extreme nesting levels can exhaust the stack memory, leading to a Denial of Service (DoS).

Environment

  • OS: Linux x86_64
  • Complier: Clang
  • Build Configuration: Release mode with ASan enabled.

Vulnerability Details

  • Target: tinyexpr
  • Vulnerability Type: CWE-674: Uncontrolled Recursion
  • Function involved: factor, term, expr, list, base, power
  • Location: tinyexpr.c (around line 503 and related recursive calls)
  • Root Cause Analysis: The parser uses a recursive descent approach to evaluate expressions. In functions like factor, expr, and base, the parser calls itself or related functions to handle sub-expressions. Without a maximum recursion depth limit, a deeply nested input (e.g., thousands of nested parentheses or function calls) causes the stack to overflow.

Reproduce

  1. Build tinyexpr and harness with Release optimization and ASAN enabled.
harness.c
#include "tinyexpr.h"
#include <stdint.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        return 1;
    }

    FILE *f = fopen(argv[1], "rb");
    if (!f) {
        return 1;
    }

    fseek(f, 0, SEEK_END);
    long len = ftell(f);
    fseek(f, 0, SEEK_SET);

    unsigned char *buf = (unsigned char *)malloc(len);
    if (!buf) {
        fclose(f);
        return 1;
    }

    fread(buf, 1, len, f);
    fclose(f);

    if (len < 10) {
        free(buf);
        return 0;
    }

    char var_name[9];
    memcpy(var_name, buf, 8);
    var_name[8] = '\0';

    double var_val = 1.0;
    te_variable vars[] = {{var_name, &var_val}};

    char *expr = (char *)malloc(len - 8 + 1);
    if (!expr) {
        free(buf);
        return 1;
    }
    
    memcpy(expr, buf + 8, len - 8);
    expr[len - 8] = '\0';

    int err;
    te_expr *n = te_compile(expr, vars, 1, &err);

    if (n) {
        te_eval(n);
        te_free(n);
    }

    free(expr);
    free(buf);
    return 0;
}
  1. Run with the crashing file:
./harness repro
ASAN report
AddressSanitizer:DEADLYSIGNAL
=================================================================
==93302==ERROR: AddressSanitizer: stack-overflow on address 0x7ffe78c6cfd8 (pc 0x55c7ac1b8be5 bp 0x7ffe78c6d0d0 sp 0x7ffe78c6cfe0 T0)
    #0 0x55c7ac1b8be5 in factor /src/tinyexpr/tinyexpr.c:503
    #1 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #2 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #3 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #4 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #5 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #6 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #7 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #8 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #9 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #10 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #11 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #12 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #13 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #14 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #15 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #16 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #17 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #18 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #19 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #20 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #21 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #22 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #23 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #24 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #25 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #26 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #27 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #28 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #29 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #30 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #31 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #32 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #33 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #34 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #35 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #36 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #37 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #38 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #39 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #40 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #41 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #42 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #43 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #44 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #45 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #46 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #47 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #48 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #49 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #50 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #51 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #52 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #53 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #54 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #55 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #56 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #57 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #58 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #59 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #60 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #61 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #62 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #63 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #64 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #65 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #66 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #67 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #68 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #69 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #70 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #71 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #72 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #73 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #74 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #75 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #76 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #77 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #78 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #79 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #80 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #81 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #82 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #83 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #84 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #85 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #86 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #87 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #88 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #89 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #90 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #91 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #92 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #93 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #94 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #95 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #96 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #97 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #98 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #99 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #100 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #101 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #102 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #103 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #104 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #105 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #106 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #107 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #108 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #109 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #110 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #111 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #112 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #113 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #114 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #115 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #116 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #117 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #118 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #119 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #120 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #121 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #122 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #123 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #124 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #125 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #126 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #127 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #128 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #129 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #130 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #131 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #132 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #133 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #134 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #135 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #136 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #137 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #138 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #139 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #140 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #141 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #142 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #143 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #144 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #145 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #146 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #147 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #148 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #149 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #150 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #151 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #152 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #153 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #154 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #155 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #156 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #157 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #158 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #159 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #160 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #161 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #162 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #163 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #164 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #165 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #166 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #167 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #168 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #169 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #170 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #171 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #172 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #173 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #174 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #175 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #176 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #177 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #178 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #179 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #180 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #181 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #182 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #183 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #184 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #185 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #186 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #187 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #188 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #189 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #190 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #191 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #192 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #193 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #194 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #195 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #196 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #197 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #198 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #199 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #200 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #201 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #202 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #203 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #204 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #205 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #206 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #207 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #208 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #209 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #210 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #211 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #212 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #213 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #214 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #215 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #216 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #217 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #218 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #219 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #220 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #221 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #222 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #223 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #224 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #225 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #226 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #227 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #228 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #229 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #230 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #231 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #232 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #233 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #234 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #235 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #236 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #237 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #238 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #239 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #240 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20
    #241 0x55c7ac1b8863 in term /src/tinyexpr/tinyexpr.c:529:20
    #242 0x55c7ac1b82fb in expr /src/tinyexpr/tinyexpr.c:551:20
    #243 0x55c7ac1b75f8 in list /src/tinyexpr/tinyexpr.c:573:20
    #244 0x55c7ac1ba018 in base /src/tinyexpr/tinyexpr.c:399:19
    #245 0x55c7ac1b9159 in power /src/tinyexpr/tinyexpr.c:433:15
    #246 0x55c7ac1b8c7b in factor /src/tinyexpr/tinyexpr.c:505:20

SUMMARY: AddressSanitizer: stack-overflow /src/tinyexpr/tinyexpr.c:503 in factor
==93302==ABORTING

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions