mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-04 03:46:52 +02:00
Fix memory overrun while setting ps status
This commit is contained in:
parent
18c3000286
commit
d31ff14ed8
@ -7,7 +7,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.38 1999/10/08 04:28:48 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/utils/init/globals.c,v 1.39 1999/12/10 10:29:01 ishii Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
* Globals used all over the place should be declared here and not
|
* Globals used all over the place should be declared here and not
|
||||||
@ -88,6 +88,13 @@ char *IndexedCatalogNames[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ps status buffer
|
||||||
|
*/
|
||||||
|
#ifndef linux
|
||||||
|
char Ps_status_buffer[1024];
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ----------------
|
/* ----------------
|
||||||
* we just do a linear search now so there's no requirement that the list
|
* we just do a linear search now so there's no requirement that the list
|
||||||
* be ordered. The list is so small it shouldn't make much difference.
|
* be ordered. The list is so small it shouldn't make much difference.
|
||||||
|
@ -48,10 +48,9 @@ char *ps_status_buffer = NULL
|
|||||||
|
|
||||||
#else /* !linux */
|
#else /* !linux */
|
||||||
|
|
||||||
extern const char **ps_status;
|
extern char Ps_status_buffer[];
|
||||||
|
|
||||||
#define PS_DEFINE_BUFFER \
|
#define PS_DEFINE_BUFFER
|
||||||
const char **ps_status = NULL
|
|
||||||
|
|
||||||
#define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) \
|
#define PS_INIT_STATUS(argc, argv, execname, username, hostname, dbname) \
|
||||||
{ \
|
{ \
|
||||||
@ -61,18 +60,18 @@ const char **ps_status = NULL
|
|||||||
argv[1] = hostname; \
|
argv[1] = hostname; \
|
||||||
argv[2] = username; \
|
argv[2] = username; \
|
||||||
argv[3] = dbname; \
|
argv[3] = dbname; \
|
||||||
ps_status = (const char **)&argv[4]; \
|
argv[4] = Ps_status_buffer; \
|
||||||
for (i = 4; i < argc; i++) \
|
for (i = 5; i < argc; i++) \
|
||||||
argv[i] = ""; /* blank them */ \
|
argv[i] = ""; /* blank them */ \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PS_CLEAR_STATUS() \
|
#define PS_CLEAR_STATUS() \
|
||||||
{ if (ps_status) *ps_status = ""; }
|
{ Ps_status_buffer[0] = '\0'; }
|
||||||
|
|
||||||
#define PS_SET_STATUS(status) \
|
#define PS_SET_STATUS(status) \
|
||||||
{ if (ps_status) *ps_status = (status); }
|
{ strcpy(Ps_status_buffer, (status)); }
|
||||||
|
|
||||||
#define PS_STATUS (ps_status ? *ps_status : "")
|
#define PS_STATUS (Ps_status_buffer)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NO_PS_STATUS
|
#ifdef NO_PS_STATUS
|
||||||
|
Loading…
Reference in New Issue
Block a user