[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: use base or use parent?



Hi Chris,

I confirm that your patch works for me on Debian.
It includes "use FindBin" twice, which is unnecessary.

Your link to the blog post and the relevant Perl ticket was helpful. I'd 
tried and failed to find out why my system had broken, or the reason for 
the sudden release of ledgersmb fixes at the weekend, even after reading 
the changelog and patches.

Thanks again for your help.

Nick


On 2016-08-04 15:04, Chris Travers wrote:
> Nick:
> 
> The following should make 1.4 behave the same on debian and other
> platforms and do so in the most secure way possible.
> https://github.com/ledgersmb/LedgerSMB/pull/1972.patch
> 
> Could you please test.
> 
> On Thu, Aug 4, 2016 at 3:10 PM, Chris Travers
> <..hidden..> wrote:
> 
>> As an update on the error:...  There's apparently some emergency
>> patching going on in the Perl community.  I don't know how long
>> before we hear the full story but based on the panicked rush.....
>> 
>> It looks like upstream Perl will fix the opacity problem.  See
>> https://rt.perl.org/Ticket/Display.html?id=128769 [3]
>> 
>> On Thu, Aug 4, 2016 at 2:02 PM, Nick Prater <..hidden..>
>> wrote:
>> 
>>> ledgersmb has stopped working on my Debian system. Substituting
>>> "use
>>> parent" for "use base" in two modules has 'fixed' the problem.
>>> 
>>> I believe this is since a recent perl update, but only discovered
>>> the
>>> problem on restarting Starman after upgrading ledgersmb. The
>>> problem is
>>> not specific to one version of ledgersmb - I see the same issue
>>> with
>>> 1.3.26 and 1.3.31.
>>> 
>>> I am running Debian GNU/Linux 8.5 (jessie) with perl 5.20.2 and
>>> ledgersmb 1.3.31
>>> 
>>> I try to start ledgersmb with:
>>> # starman --preload-app tools/starman.psgi
>>> 
>>> But I get an error:
>>> 
>>>> Error while loading /srv/ledgersmb-1.4.31/tools/starman.psgi:
>>>> Base class package "LedgerSMB::DBObject" is empty.
>>>> (Perhaps you need to 'use' the module which defines that package
>>> first,
>>>> or make that module available in @INC... [snip]
>>>> at LedgerSMB/Setting.pm line 53
>>> 
>>> http://perldoc.perl.org/perlobj.html [1] says:
>>> 
>>>> ...Much older code also uses the base pragma.
>>>> For new code, we recommend that you use the parent pragma to
>>>> declare your parents. This pragma will take care of setting
>>> @ISA.
>>>> It will also load the parent classes and make sure that the
>>>> package doesn't inherit from itself.
>>> 
>>> changing "use base" for "use parent" in Setting.pm fixes this
>>> error.
>>> 
>>> I then get another error:
>>> 
>>>> Error while loading /srv/ledgersmb-1.4.31/tools/starman.psgi:
>>>> Base class package "LedgerSMB::Request" is empty.
>>>> (Perhaps you need to 'use' the module which defines that package
>>> first,
>>>> or make that module available in @INC... [snip]
>>>> at LedgerSMB.pm line 182.
>> 
>>> changing "use base" for "use parent" in LedgerSMB.pm fixes this
>>> error.
>>> Starman then starts and I can use ledgersmb normally.
>>> 
>>> Frankly I don't understand why "use base" is failing in these two
>>> locations and why "use parent" behaves differently. I wonder if
>>> this
>>> problem is unique to my setup, or it affects others also. For now
>>> I'm up
>>> and running. I document my steps here in case anybody else
>>> encounters a
>>> similar problem, but I'd also appreciate any words of wisdom to
>>> help me
>>> understand what is happening.
>> 
>> 
> http://ledgersmbdev.blogspot.dk/2016/07/notes-on-security-separation-of.html
>> [4] has a fair bit of information.
>> 
>>> Many thanks,
>>> 
>>> Nick


------------------------------------------------------------------------------
_______________________________________________
Ledger-smb-devel mailing list
..hidden..
https://lists.sourceforge.net/lists/listinfo/ledger-smb-devel