[PATCH] fix for bug 12292

Alexander Bokovoy ab at samba.org
Wed Sep 28 18:14:39 UTC 2016


On ke, 28 syys 2016, Rowland Penny wrote:
> On Wed, 28 Sep 2016 17:37:37 +0300
> Alexander Bokovoy <ab at samba.org> wrote:
> 
> > On ke, 28 syys 2016, Rowland Penny wrote:
> > > > > > However, I think Douglas was trying to point out that it is
> > > > > > bad practice in Python programming to have 'except' without
> > > > > > specific exception -- catch-all cases are almost every time
> > > > > > wrong. So if you know that there will be an index error, just
> > > > > > catch that exception type to handle it properly.
> > > > > 
> > > > > Well yes, but I only found out what the exception was by adding
> > > > > 'Exception, e' to the line i.e. I hadn't a clue
> > > > > 
> > > > > I personally think you are all getting bogged down in
> > > > > technicalities here, what does it matter why the user couldn't
> > > > > be found, it couldn't be found!
> > > > Correct. However, if there would be another reason, like genuine
> > > > error in the underlying software stack, the 'except IndexError,
> > > > e' exception handling would allow us to crash with a proper
> > > > backtrace to see that issue. A plain 'except:' or 'except
> > > > Exception, e' will cover up any error and will complicate
> > > > debugging. That's one point why we insist on this technicality.
> > > > 
> > > 
> > > OK, that's me over there waving the white flag ;-)
> > > 
> > > I will alter the patch to use 'except IndexError, e' ,
> > > but before I do, is there anything else wrong with my patch ???
> > I don't see anything else being incorrect in it.
> > 
> 
> OK, See the attached patch
> 
> Rowland
>  

> From a502ea005820b80e857e7d02af4e772895bcfef5 Mon Sep 17 00:00:00 2001
> From: Rowland Penny <rpenny at samba.org>
> Date: Wed, 28 Sep 2016 15:39:52 +0100
> Subject: [PATCH] bug 12292: stop user.py throwing errors if user is unknown
> 
> Signed-off-by: Rowland Penny <rpenny at samba.org>
> ---
>  python/samba/netcmd/user.py | 19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/python/samba/netcmd/user.py b/python/samba/netcmd/user.py
> index 5adc287..10f98f4 100644
> --- a/python/samba/netcmd/user.py
> +++ b/python/samba/netcmd/user.py
> @@ -406,10 +406,23 @@ Example2 shows how to delete a user in the domain against the local server.   su
>          lp = sambaopts.get_loadparm()
>          creds = credopts.get_credentials(lp, fallback_machine=True)
>  
> +        samdb = SamDB(url=H, session_info=system_session(),
> +                      credentials=creds, lp=lp)
> +
> +        filter = ("(&(sAMAccountName=%s)(sAMAccountType=805306368))" %
> +                   username)
> +
>          try:
> -            samdb = SamDB(url=H, session_info=system_session(),
> -                          credentials=creds, lp=lp)
> -            samdb.deleteuser(username)
> +            res = samdb.search(base=samdb.domain_dn(),
> +                               scope=ldb.SCOPE_SUBTREE,
> +                               expression=filter,
> +                               attrs=["dn"])
> +            user_dn = res[0].dn
> +        except IndexError, e:
> +            raise CommandError('Unable to find user "%s"' % (username), e)
> +
> +        try:
> +            samdb.delete(user_dn)
>          except Exception, e:
>              raise CommandError('Failed to remove user "%s"' % username, e)
>          self.outf.write("Deleted user %s\n" % username)
> -- 
> 2.1.4
> 

Thanks. Looks good to me. RB+. Can you add another one for the group case as
you promised and then I'll push them.

-- 
/ Alexander Bokovoy



More information about the samba-technical mailing list