Merge branch 'kh/column-reject-negative-padding'

"git column" has been taught to reject negative padding value, as
it would lead to nonsense behaviour including division by zero.

* kh/column-reject-negative-padding:
  column: guard against negative padding
  column: disallow negative padding
This commit is contained in:
Junio C Hamano
2024-02-26 18:10:25 -08:00
3 changed files with 17 additions and 0 deletions

View File

@ -45,6 +45,8 @@ int cmd_column(int argc, const char **argv, const char *prefix)
memset(&copts, 0, sizeof(copts));
copts.padding = 1;
argc = parse_options(argc, argv, prefix, options, builtin_column_usage, 0);
if (copts.padding < 0)
die(_("%s must be non-negative"), "--padding");
if (argc)
usage_with_options(builtin_column_usage, options);
if (real_command || command) {

View File

@ -182,6 +182,8 @@ void print_columns(const struct string_list *list, unsigned int colopts,
{
struct column_options nopts;
if (opts && (0 > opts->padding))
BUG("padding must be non-negative");
if (!list->nr)
return;
assert((colopts & COL_ENABLE_MASK) != COL_AUTO);
@ -361,6 +363,8 @@ int run_column_filter(int colopts, const struct column_options *opts)
{
struct strvec *argv;
if (opts && (0 > opts->padding))
BUG("padding must be non-negative");
if (fd_out != -1)
return -1;

View File

@ -196,4 +196,15 @@ EOF
test_cmp expected actual
'
test_expect_success 'padding must be non-negative' '
cat >input <<\EOF &&
1 2 3 4 5 6
EOF
cat >expected <<\EOF &&
fatal: --padding must be non-negative
EOF
test_must_fail git column --mode=column --padding=-1 <input >actual 2>&1 &&
test_cmp expected actual
'
test_done