-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
dd: should terminate with error if skip argument is too large #7275
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Notes:
|
reference to the check in GNU coreutils: |
GNU testsuite comparison:
|
Can you please add a test to ensure we don't regress in the future? |
yes, do we care that the GnuTests CI step failed? I'm not sure how to tell what test exactly failed from the logs. I ran this gnu test but I'm unsure of how to compare it to see what test actually failed. $ bash util/run-gnu-test.sh ============================================================================
Testsuite summary for GNU coreutils 9.6.8-fbfd88-dirty
============================================================================
# TOTAL: 617
# PASS: 469
# SKIP: 85
# XFAIL: 0
# FAIL: 63
# XPASS: 0
# ERROR: 0
============================================================================
See ./tests/test-suite.log for debugging.
Some test(s) failed. Please report this to bug-coreutils@gnu.org,
together with the test-suite.log file (gzipped) and your system
information. Thanks.
============================================================================
|
It fails because of an intermittent test and you can ignore it. |
GNU testsuite comparison:
|
@cakebaker this should be ready to go now. |
src/uu/dd/src/parseargs.rs
Outdated
return Err(ParseError::InvalidNumber(format!( | ||
"'{skip}': Value too large for defined data type" | ||
))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a similar error in uucore::parse_size
here:
coreutils/src/uucore/src/lib/parser/parse_size.rs
Lines 481 to 484 in e0a7c31
Self::SizeTooBig(format!( | |
"{}: Value too large for defined data type", | |
s.quote() | |
)) |
skip
and seek
are too large at the time of parsing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jfinkels yes, they determine it when its parsed. Honestly I feel like its a "bug" upstream. I can reuse uucore::parse_size if you'd like instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here is the code check they do
https://github.com/coreutils/coreutils/blob/master/src/dd.c#L1581C23-L1581C39
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ic3man5 Please do not read or get inspiration from GNU's coreutils source code, as it would violate the terms of the copyleft GPL license attached to their software. We distribute uutils' coreutils under the MIT license, which is not compatible with copyleft licenses.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nevertheless, yes, please reuse parse_size.rs
to reduce code duplication
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jfinkels @RenjiSann I refactored to use ParseSizeError
instead. I'll rebase once this is accepted.
1631b38
to
660007a
Compare
GNU testsuite comparison:
|
GNU testsuite comparison:
|
The CI is unhappy :( |
GNU testsuite comparison:
|
Can you handle this ?
|
sorry I didn't see notification on this one, I'll look into it. |
@RenjiSann Okay I actually need some direction here. I noticed a lot of tests are quoting with I see a lot of compatibility issues here in other places besides this. What am I missing here? coreutils installed on my system: $ dd --version
dd (coreutils) 9.6 edit: The original issue report shows single quotations also as expected. edit2: locale information $ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=en_US.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=en_US.UTF-8
LC_NAME=en_US.UTF-8
LC_ADDRESS=en_US.UTF-8
LC_TELEPHONE=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
LC_IDENTIFICATION=en_US.UTF-8
LC_ALL=
|
GNU testsuite comparison:
|
The reason is that for now, we don't handle locales at all, and by default we replicate the behavior of |
Consequently, the easiest thing to do right now is to expect our code to format output as expected with the Someday we'll look into localization, but there is no easy way to handle it for now. |
ping @ic3man5 |
sorry, going to keep working on this, just been busy. If someone else wants to take it over I won't mind. I don't want to block progress. |
Fixes #7216