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

From: Ladislav Jech <archenroot(at)gmail(dot)com>
To: Khushboo Vashi <khushboo(dot)vashi(at)enterprisedb(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 11:11:58
Message-ID: CAOxf7XZH+90S5b0iFVP3E5qvYVPyENoCdB4xe4sgnb_5TUYPHg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

Hi,
It will be good if you support fully github or any GIT repository for
managing pull requests. Is there any or you wan't me to generate *.patch
file? I am new to pgadmin 4, so not sure how this works. Let me know.
Ladislav

2017-06-27 11:52 GMT+02:00 Khushboo Vashi <khushboo(dot)vashi(at)enterprisedb(dot)com>:

> 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 Dave Page 2017-06-27 13:03:10 pgAdmin 4 commit: Use on-demand loading for results in the query tool.
Previous Message Khushboo Vashi 2017-06-27 09:52:27 Re: crypto.py bug on server add form (button save) with python 3.5 - Can't convert 'bytes' object to str implicitly