js-confuser icon indicating copy to clipboard operation
js-confuser copied to clipboard

Delete operation fails

Open anywhichway opened this issue 11 months ago • 2 comments

Describe the bug:

Deleting a property does not succeed in removing a property

Config and Small code sample

Config:

{
        target: 'browser',
        calculator: false,
        compact: true,
        hexadecimalNumbers: true,
        controlFlowFlattening: 0.05,
        deadCode: 0.01,
        dispatcher: 0.1,
        duplicateLiteralsRemoval: true,
        identifierGenerator: "randomized",
        minify: true,
        movedDeclarations: true,
        objectExtraction: true,
        opaquePredicates: 0.1,
        renameVariables: false,
        renameGlobals: false,
        stringConcealing: true,
        globalConcealing: false
    }

Code:

this code

 const users = session.users,
                user = session.user,
                invitations = user.invitations,
                dimensions = user.dimensions,
                partners = user.partners,
                id = form.id;
            delete partners[name];
            delete invitations[id];
            delete users[id];
            .... other code

is transformed to

const users = session[__p_7425670131__JS_PREDICT__(0x121)]
              , user = session.user
              , invitations = user.invitations
              , dimensions = user.dimensions
              , partners = user.partners
              , id = form.id;
            __p_4869811828(delete (delete partners[name],
            invitations[id]), delete users[id], ... other code)

Expected behavior

the property name bound to 'id' should be deleted from invitations

Actual behavior

the property is not deleted

Additional context

I believe the transformation __p_4869811828(delete (delete partners[name], invitations[id]), delete users[id], ... other code) is incorrect and should be __p_4869811828(delete partners[name], delete invitations[id], delete users[id], ... other code)

This code works when transformed:

const users = session.users,
                user = session.user,
                invitations = user.invitations,
                dimensions = user.dimensions,
                partners = user.partners,
                id = form.id;
            delete partners[name];
            [invitations,users].forEach(obj => delete obj[id]);

anywhichway avatar Nov 19 '24 14:11 anywhichway