bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Segfaults over a glob with quoted UTF-8 characters


From: Frédéric Brière
Subject: Segfaults over a glob with quoted UTF-8 characters
Date: Tue, 3 Nov 2020 16:09:47 -0500

  $ echo $BASH_VERSION
   5.1.0(1)-rc1
  $ echo $LC_ALL
   C.UTF-8
  $ echo é/*
   é/*
  $ echo 'é'/*
   Segmentation fault (core dumped)

The same occurs when escaping with a backslash.  Whether or not the glob
actually matches something does not appear to matter.

I could not reproduce this with 5.0.3(1)-release, so I guess this was
introduced with version 5.1.

Here's the backtrace:

#5  0x0000564e8eb3a4fb in wdequote_pathname 
(pathname=pathname@entry=0x564e8f46b6d0 "é/") at ../../.././lib/glob/glob.c:487
        ps = {__count = 0, __value = {__wch = 0, __wchb = "\000\000\000"}}
        len = 4
        n = <optimized out>
        wpathname = 0x0
        i = <optimized out>
        j = <optimized out>
        orig_wpathname = 0x564e8f5b60b0 L"é/"
#6  0x0000564e8eb3b0eb in dequote_pathname (pathname=0x564e8f46b6d0 "é/") at 
../../.././lib/glob/glob.c:504
No locals.
#7  glob_filename (pathname=pathname@entry=0x564e8f46b790 "\\é/*", flags=0) at 
../../.././lib/glob/glob.c:1466
        temp_results = <optimized out>
        result = 0x564e8f5d8a50
        new_result = <optimized out>
        result_size = 1
        directory_name = 0x564e8f46b6d0 "é/"
        filename = 0x564e8f46b794 "*"
        dname = <optimized out>
        fn = <optimized out>
        directory_len = 4
        free_dirname = 1
        dflags = <optimized out>
        hasglob = <optimized out>
#8  0x0000564e8eb05c2d in shell_glob_filename (pathname=<optimized out>, 
qflags=qflags@entry=8) at .././pathexp.c:470
        temp = 0x564e8f46b790 "\\é/*"
        results = <optimized out>
        gflags = <optimized out>
        quoted_pattern = <optimized out>
#9  0x0000564e8eaf33e6 in glob_expand_word_list (tlist=0x564e8f45d380, 
eflags=31) at .././subst.c:11383
        glob_array = 0x0
        temp_string = <optimized out>
        glob_index = <optimized out>
        glob_list = <optimized out>
        output_list = 0x564e8f45d160
        disposables = 0x0
        next = 0x0
        tword = <optimized out>
        x = <optimized out>
#10 0x0000564e8eb00685 in expand_word_list_internal (eflags=31, list=<optimized 
out>) at .././subst.c:11983
        new_list = <optimized out>
        temp_list = <optimized out>
        tint = <optimized out>
        savecmd = <optimized out>
        new_list = <optimized out>
        temp_list = <optimized out>
        tint = <optimized out>
        savecmd = <optimized out>
        assign_func = <optimized out>
        is_special_builtin = <optimized out>
        is_builtin_or_func = <optimized out>
#11 expand_words (list=<optimized out>) at .././subst.c:11331
No locals.
#12 0x0000564e8ead25f3 in execute_simple_command (fds_to_close=0x564e8f45d6e0, 
async=0, pipe_out=-1, pipe_in=-1, simple_command=<optimized out>) at 
.././execute_cmd.c:4377
        words = <optimized out>
        first_word_quoted = <optimized out>
        result = <optimized out>
        builtin_is_special = 0
        old_last_async_pid = <optimized out>
        command_line = 0x0
        temp = <optimized out>
        dofork = <optimized out>
        fork_flags = <optimized out>
        old_builtin = 0
        lastarg = <optimized out>
        cmdflags = 0
        builtin = <optimized out>
        lastword = <optimized out>
        already_forked = 0
        func = <optimized out>
        old_command_builtin = 0
        words = <optimized out>
        lastword = <optimized out>
        command_line = <optimized out>
        lastarg = <optimized out>
        temp = <optimized out>
        first_word_quoted = <optimized out>
        result = <optimized out>
        builtin_is_special = <optimized out>
        already_forked = <optimized out>
        dofork = <optimized out>
        fork_flags = <optimized out>
        cmdflags = <optimized out>
        old_last_async_pid = <optimized out>
        builtin = <optimized out>
        func = <optimized out>
        old_builtin = <optimized out>
        old_command_builtin = <optimized out>
        p = <optimized out>
        disposer = <optimized out>
        l = <optimized out>
        cmdtype = <optimized out>
        job = <optimized out>
        jflags = <optimized out>
        started_status = <optimized out>
#13 execute_command_internal (command=0x564e8f44af10, asynchronous=<optimized 
out>, pipe_in=-1, pipe_out=<optimized out>, fds_to_close=0x564e8f45d6e0) at 
.././execute_cmd.c:846
        exec_result = 0
        user_subshell = <optimized out>
        invert = <optimized out>
        ignore_return = 0
        was_error_trap = 0
        fork_flags = <optimized out>
        my_undo_list = 0x0
        exec_undo_list = 0x0
        tcmd = <optimized out>
        save_line_number = 3
        ofifo = 0
        nfifo = 0
        osize = 0
        saved_fifo = 0
        ofifo_list = 0x0
#14 0x0000564e8ead3865 in execute_command (command=0x564e8f44af10) at 
.././execute_cmd.c:395
        bitmap = 0x564e8f45d6e0
        result = <optimized out>
#15 0x0000564e8eab99db in reader_loop () at .././eval.c:170
        code = <optimized out>
        our_indirection_level = 1
        current_command = 0x564e8f44af10
#16 0x0000564e8eab8668 in main (argc=1, argv=0x7ffef0ca95a8, 
env=0x7ffef0ca95b8) at .././shell.c:811
        i = <optimized out>
        code = <optimized out>
        old_errexit_flag = 0
        saverst = <optimized out>
        locally_skip_execution = 0
        arg_index = 1
        top_level_arg_index = 1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]