Skip to content

src: node crashes due to multiline environment value - #52266

Closed
mertcanaltin wants to merge 5 commits into
nodejs:mainfrom
mertcanaltin:dev-52248
Closed

src: node crashes due to multiline environment value#52266
mertcanaltin wants to merge 5 commits into
nodejs:mainfrom
mertcanaltin:dev-52248

Conversation

@mertcanaltin

Copy link
Copy Markdown
Member

Dotenv::ParseContent includes some improvements to avoid crash problems when processing a multiline value
#52248

@nodejs-github-botnodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. labels Mar 29, 2024
Comment threadtest/parallel/test-dotenv.js Outdated
assert.strictEqual(process.env.MULTI_SINGLE_QUOTED, 'THIS\nIS\nA\nMULTILINE\nSTRING');
assert.strictEqual(process.env.MULTI_BACKTICKED, 'THIS\nIS\nA\n"MULTILINE\'S"\nSTRING');
assert.strictEqual(process.env.MULTI_NOT_VALID_QUOTE, '"');
assert.strictEqual(process.env.MULTI_NOT_VALID_QUOTE, '');

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this cover all the added code?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The MULTI_NOT_VALID_QUOTE test makes sure that if there's a line starting with a double quote that doesn't close, we still count it as one single value.

MULTI_NOT_VALID_QUOTE="

IMO we should keep this test to make sure we handle these situations right

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dotenv interprets this as a single quote " too not an empty value

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes this preserves the previous code

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I must have done this wrong I will update it today

@anonriganonrig left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a failing test?

@mertcanaltin

Copy link
Copy Markdown
MemberAuthor

Can you add a failing test?

I wonder if it's normal to get fail afterwards 🤔

@marco-ippolito

Copy link
Copy Markdown
Member

Can you add a failing test?

I wonder if it's normal to get fail afterwards 🤔

you can make sure it throws assert.throws

@mertcanaltin

Copy link
Copy Markdown
MemberAuthor

I wanted to switch to the code in the main branch and test here, but I got such a test error

nodegit:(dev-52248)./nodetest/parallel/test-dotenv.js--NODE_SKIP_FLAG_CHECK
node:assert:126thrownewAssertionError(obj);^AssertionError[ERR_ASSERTION]: Expectedvaluestobe strictly equal:
+actual-expected+undefined-'basic'atObject.<anonymous>(/Users/mert/Desktop/openSource/node/test/parallel/test-dotenv.js:8:8)atModule._compile(node:internal/modules/cjs/loader:1421:14)atModule._extensions..js(node:internal/modules/cjs/loader:1499:10)atModule.load(node:internal/modules/cjs/loader:1232:32)atModule._load(node:internal/modules/cjs/loader:1048:12)atFunction.executeUserEntryPoint[asrunMain](node:internal/modules/run_main:187:14)
at node:internal/main/run_main_module:28:49{generatedMessage: true,code: 'ERR_ASSERTION',actual: undefined,expected: 'basic',operator: 'strictEqual'}Node.jsv22.0.0-pre

@mertcanaltinmertcanaltin added the request-ci Add this label to start a Jenkins CI on a PR. label Apr 6, 2024
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Apr 6, 2024
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++Issues and PRs that require attention from people who are familiar with C++.needs-ciPRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@mertcanaltin@marco-ippolito@nodejs-github-bot@kibertoad@anonrig@IlyasShabi