Thread: [pgAdmin4][Patch] RM #3277 Runtime startup error handling is brokenon Windows

Hi Hackers,

Attached is the patch file to fix RM #3277 Runtime startup error handling is broken on Windows. I have figure out the crash at the following call of Server.cpp(line no 326):

PyRun_SimpleFile(fdopen(PyObject_AsFileDescriptor(PyFileObject),"r"), m_appfile_utf8.data())

When application exits due to some error it throws BEX refers to Buffer Overflow Exception, when I debug and found that it throws BEX for above function call. I have replace that call with the following:
PyRun_SimpleFile(cp, m_appfile_utf8.data())
Anyways we have open the file using fopen() at the top of the function then why to open that again using fdopen() in the first call. 

Tested the patch with Python 3.5 and 3.6, please review it.

--
Akshay Joshi
Sr. Software Architect


Phone: +91 20-3058-9517
Mobile: +91 976-788-8246
Attachment
Hi Akshay,

Thanks for the patch.  It looks good to me as long as it also works on windows.

Sincerely,

Victoria & Anthony

On Thu, May 31, 2018 at 4:53 AM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi Hackers,

Attached is the patch file to fix RM #3277 Runtime startup error handling is broken on Windows. I have figure out the crash at the following call of Server.cpp(line no 326):

PyRun_SimpleFile(fdopen(PyObject_AsFileDescriptor(PyFileObject),"r"), m_appfile_utf8.data())

When application exits due to some error it throws BEX refers to Buffer Overflow Exception, when I debug and found that it throws BEX for above function call. I have replace that call with the following:
PyRun_SimpleFile(cp, m_appfile_utf8.data())
Anyways we have open the file using fopen() at the top of the function then why to open that again using fdopen() in the first call. 

Tested the patch with Python 3.5 and 3.6, please review it.

--
Akshay Joshi
Sr. Software Architect


Phone: +91 20-3058-9517
Mobile: +91 976-788-8246
Thanks, applied.

On Thu, May 31, 2018 at 4:52 AM, Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi Hackers,

Attached is the patch file to fix RM #3277 Runtime startup error handling is broken on Windows. I have figure out the crash at the following call of Server.cpp(line no 326):

PyRun_SimpleFile(fdopen(PyObject_AsFileDescriptor(PyFileObject),"r"), m_appfile_utf8.data())

When application exits due to some error it throws BEX refers to Buffer Overflow Exception, when I debug and found that it throws BEX for above function call. I have replace that call with the following:
PyRun_SimpleFile(cp, m_appfile_utf8.data())
Anyways we have open the file using fopen() at the top of the function then why to open that again using fdopen() in the first call. 

Tested the patch with Python 3.5 and 3.6, please review it.

--
Akshay Joshi
Sr. Software Architect


Phone: +91 20-3058-9517
Mobile: +91 976-788-8246



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company