BUG #14615: ReplicationOriginShmemInit Memory access cross-border

From: bret(dot)shao(at)outlook(dot)com
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #14615: ReplicationOriginShmemInit Memory access cross-border
Date: 2017-04-10 06:26:21
Message-ID: 20170410062621.25948.74646@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 14615
Logged by: bret shao
Email address: bret(dot)shao(at)outlook(dot)com
PostgreSQL version: 9.6.2
Operating system: linux
Description:

MemSet(replication_states, 0, ReplicationOriginShmemSize()); in function
ReplicationOriginShmemInit cause cross-border,because that start address of
the share memory allocated is replication_states_ctl, but call MemSet to
initialize this memory start from replication_states which is variable
states's address in struct ReplicationStateCtl.so call MemSet to set 0 with
the total size of this share memory will cross border of this share memory.

Although, this cross-border will not caused the system failure due to share
memory allocation strategy after my analysis. but i still believe we
shouldn't do like this.

Fix suggestion:
change to
MemSet(replication_states_ctl, 0, ReplicationOriginShmemSize()); then move
to the beginning of if statement.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Michael Paquier 2017-04-10 06:38:56 Re: BUG #14615: ReplicationOriginShmemInit Memory access cross-border
Previous Message mustafa husny 2017-04-09 22:05:38 manage connections