summaryrefslogtreecommitdiffstats
path: root/plugins/check_pgsql.c
diff options
context:
space:
mode:
authorRincewindsHat <12514511+RincewindsHat@users.noreply.github.com>2023-02-19 13:39:08 (GMT)
committerRincewindsHat <12514511+RincewindsHat@users.noreply.github.com>2023-02-19 13:39:08 (GMT)
commit74b6984047d330a3cc7cb7f63645849fe7676c63 (patch)
tree65a26800103d8d66f7e6cb4acfbfc9f315ec750b /plugins/check_pgsql.c
parent423284edfa980fc3fdb51ab20af96685a988ba97 (diff)
parentc07206f2ccc2356aa74bc6813a94c2190017d44e (diff)
downloadmonitoring-plugins-74b6984047d330a3cc7cb7f63645849fe7676c63.tar.gz
Merge branch 'master' into check_icmp_cleanuprefs/pull/1807/head
Diffstat (limited to 'plugins/check_pgsql.c')
-rw-r--r--plugins/check_pgsql.c48
1 files changed, 4 insertions, 44 deletions
diff --git a/plugins/check_pgsql.c b/plugins/check_pgsql.c
index c893386..c26cd43 100644
--- a/plugins/check_pgsql.c
+++ b/plugins/check_pgsql.c
@@ -69,7 +69,6 @@ int process_arguments (int, char **);
69int validate_arguments (void); 69int validate_arguments (void);
70void print_usage (void); 70void print_usage (void);
71void print_help (void); 71void print_help (void);
72int is_pg_dbname (char *);
73int is_pg_logname (char *); 72int is_pg_logname (char *);
74int do_query (PGconn *, char *); 73int do_query (PGconn *, char *);
75 74
@@ -347,10 +346,10 @@ process_arguments (int argc, char **argv)
347 pgport = optarg; 346 pgport = optarg;
348 break; 347 break;
349 case 'd': /* database name */ 348 case 'd': /* database name */
350 if (!is_pg_dbname (optarg)) /* checks length and valid chars */ 349 if (strlen(optarg) >= NAMEDATALEN) {
351 usage2 (_("Database name is not valid"), optarg); 350 usage2 (_("Database name exceeds the maximum length"), optarg);
352 else /* we know length, and know optarg is terminated, so us strcpy */ 351 }
353 snprintf(dbName, NAMEDATALEN, "%s", optarg); 352 snprintf(dbName, NAMEDATALEN, "%s", optarg);
354 break; 353 break;
355 case 'l': /* login name */ 354 case 'l': /* login name */
356 if (!is_pg_logname (optarg)) 355 if (!is_pg_logname (optarg))
@@ -414,45 +413,6 @@ validate_arguments ()
414 return OK; 413 return OK;
415} 414}
416 415
417
418/******************************************************************************
419
420@@-
421<sect3>
422<title>is_pg_dbname</title>
423
424<para>&PROTO_is_pg_dbname;</para>
425
426<para>Given a database name, this function returns TRUE if the string
427is a valid PostgreSQL database name, and returns false if it is
428not.</para>
429
430<para>Valid PostgreSQL database names are less than &NAMEDATALEN;
431characters long and consist of letters, numbers, and underscores. The
432first character cannot be a number, however.</para>
433
434</sect3>
435-@@
436******************************************************************************/
437
438
439
440int
441is_pg_dbname (char *dbname)
442{
443 char txt[NAMEDATALEN];
444 char tmp[NAMEDATALEN];
445 if (strlen (dbname) > NAMEDATALEN - 1)
446 return (FALSE);
447 strncpy (txt, dbname, NAMEDATALEN - 1);
448 txt[NAMEDATALEN - 1] = 0;
449 if (sscanf (txt, "%[_a-zA-Z]%[^_a-zA-Z0-9-]", tmp, tmp) == 1)
450 return (TRUE);
451 if (sscanf (txt, "%[_a-zA-Z]%[_a-zA-Z0-9-]%[^_a-zA-Z0-9-]", tmp, tmp, tmp) ==
452 2) return (TRUE);
453 return (FALSE);
454}
455
456/** 416/**
457 417
458the tango program should eventually create an entity here based on the 418the tango program should eventually create an entity here based on the