Re: crypto.py bug on server add form (button save) with python 3.5 - Can't convert 'bytes' object to str implicitly

From: Khushboo Vashi <khushboo(dot)vashi(at)enterprisedb(dot)com>
To: Ladislav Jech <archenroot(at)gmail(dot)com>
Cc: pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: crypto.py bug on server add form (button save) with python 3.5 - Can't convert 'bytes' object to str implicitly
Date: 2017-06-27 09:52:27
Message-ID: CAFOhELdjaw1x-GgBUEXOe3rjrk4tzGrddNz_pFEQQ4S17_=kwg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi,

Can you send the patch for the same. I think this is the valid fix.

Thanks,
Khushboo

On Tue, Jun 27, 2017 at 3:02 PM, Ladislav Jech <archenroot(at)gmail(dot)com> wrote:

> I am running on following Gentoo system with Python 3.5 as default
> (although i have 2.7 and 3.4 available to switch as well).
>
> I compiled from source code via github:
> commit 15cb9fc35b41736a331a452b9303a79e8f13ee36 (HEAD -> master,
> origin/master, origin/HEAD)
>
> The error appears when I want to click on Save while adding new server to
> the list, I put few lines into the code to detect the times:
> 2017-06-27 13:21:48,329: DEBUG pgadmin: Not running under the desktop
> runtime, port: 5050
> Starting pgAdmin 4. Please navigate to http://127.0.0.1:5050 in your
> browser.
> str var python type is <class 'str'>
> str var object's type is str
> padding_string var python type is <class 'bytes'>
> padding_string var object's type is bytes
> 2017-06-27 13:21:53,028: ERROR pgadmin: Can't convert 'bytes' object to
> str implicitly
> Traceback (most recent call last):
> File "/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/browser/
> server_groups/servers/__init__.py", line 619, in create
> password = encrypt(password, current_user.password)
> File "/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/utils/crypto.py",
> line 31, in encrypt
> cipher = AES.new(pad(key), AES.MODE_CFB, iv)
> File "/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/utils/crypto.py",
> line 80, in pad
> return str + ((32 - len(str) % 32) * padding_string)
> TypeError: Can't convert 'bytes' object to str implicitly
> 2017-06-27 13:21:53,031: INFO werkzeug: 127.0.0.1 - - [27/Jun/2017
> 13:21:53] "POST /browser/server/obj/2/ HTTP/1.1" 410 -
> 2017-06-27 13:22:49,936: INFO werkzeug: * Detected change in
> '/home/zangetsu/devel/tmp/pgadmin4/web/pgadmin/utils/crypto.py', reloading
> 2017-06-27 13:22:50,138: INFO werkzeug: * Restarting with reloader
>
> So this is the error:
> Can't convert 'bytes' object to str implicitly
>
> To fix this on Python 3.5 I simply changed in pgadmin4/web/pgadmin/utils/crypto.py
> file this line:
> return str + ((32 - len(str) % 32) * padding_string)
> to
> return str + ((32 - len(str) % 32) * padding_string.decode())
>
> Another solution could be to change whole str into bytes. Not sure what is
> better, but now it works.
>

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Ladislav Jech 2017-06-27 11:11:58 Re: crypto.py bug on server add form (button save) with python 3.5 - Can't convert 'bytes' object to str implicitly
Previous Message Ladislav Jech 2017-06-27 09:32:11 crypto.py bug on server add form (button save) with python 3.5 - Can't convert 'bytes' object to str implicitly