Skip to content

Conversation

@marsupial
Copy link
Contributor

Description

Current code is passing string_view::data() to both strchr and atoi, which expect/require null terminated strings.

Tests

Part 1 of 2 which allows connecting individual components of aggregate types.
Second part includes proper test against ShadingSystemImpl::decode_connected_param.

Checklist:

  • [x ] I have read the contribution guidelines.
  • [ x] I have previously submitted a [Contributor License Agreement (http://opensource.imageworks.com/cla/).

@lgritz
Copy link
Collaborator

lgritz commented Oct 24, 2017

I think your diagnosis of the problem is correct (good catch), and I believe your code is fine, but I think there may be a simpler solution. Let me take a quick stab at it and see which way you like better.

lgritz added a commit to lgritz/OpenShadingLanguage that referenced this pull request Oct 25, 2017
@marsupial correctly points out that we are unsafely passing
a string_view.data() into both atoi and strchr, which is unsafe because
there's no guarantee that a string_view is null-terminated. Ugh!

He proposed a fix here: AcademySoftwareFoundation#800
and there's nothing wrong with it per se, but I suspected it could be done
more simply, so this PR is my stab at it, using the `OIIO::Strutil::parse_*`
functions.
@lgritz
Copy link
Collaborator

lgritz commented Oct 25, 2017

Counter-proposal presented as #805. Thoughts?

lgritz added a commit to lgritz/OpenShadingLanguage that referenced this pull request Oct 27, 2017
@marsupial correctly points out that we are unsafely passing
a string_view.data() into both atoi and strchr, which is unsafe because
there's no guarantee that a string_view is null-terminated. Ugh!

He proposed a fix here: AcademySoftwareFoundation#800
and there's nothing wrong with it per se, but I suspected it could be done
more simply, so this PR is my stab at it, using the `OIIO::Strutil::parse_*`
functions.
lgritz added a commit to lgritz/OpenShadingLanguage that referenced this pull request Oct 27, 2017
@marsupial correctly points out that we are unsafely passing
a string_view.data() into both atoi and strchr, which is unsafe because
there's no guarantee that a string_view is null-terminated. Ugh!

He proposed a fix here: AcademySoftwareFoundation#800
and there's nothing wrong with it per se, but I suspected it could be done
more simply, so this PR is my stab at it, using the `OIIO::Strutil::parse_*`
functions.
lgritz added a commit that referenced this pull request Oct 27, 2017
@marsupial correctly points out that we are unsafely passing
a string_view.data() into both atoi and strchr, which is unsafe because
there's no guarantee that a string_view is null-terminated. Ugh!

He proposed a fix here: #800
and there's nothing wrong with it per se, but I suspected it could be done
more simply, so this PR is my stab at it, using the `OIIO::Strutil::parse_*`
functions.
@lgritz
Copy link
Collaborator

lgritz commented Oct 27, 2017

I merged the counter-proposal of #805, so closing this one.

@lgritz lgritz closed this Oct 27, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants