pgsql-interfaces@
I'm writing a backend for some ftp demon on C. I want to make it possible
to authorize server's clients via pgsql. And I have a such problem:
I have a function FCN_VALIDATE_LOGIN which checks if a given users name is ok.
It's looks like this (I've removed some debug code) :
---cut 8<---
int
FCN_VALIDATE_LOGIN (const char *login)
{ PGresult *res;
char *query; query = malloc(256);
sprintf(query, "SELECT * FROM users WHERE name=\'%s\';", login);
res = PQexec(conn, query);
if (!res || PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr, "%s\n",
PQresultErrorMessage(conn)); printf("Error\n"); }
if (PQntuples(res) == 1) { int uid_field_index; unsigned int *uid;
uid_field_index = PQfnumber(res, "uid"); uid = (int *) PQgetvalue(res, 0,
uid_field_index);
#ifdef DEBUG fprintf(stderr, "uid_field_index = %i\n uid %i\n", uid_field_index, uid);
#endif // return uid; } else { // Not such user return -1; }
PQclear(res);
}
---cut 8<---
And I have a such table:
---cut 8<---
CREATE TABLE users ( name character varying NOT NULL, passwd character varying, home character varying, groups
charactervarying NOT NULL, rights character varying NOT NULL, uid int4 NOT NULL, ip_allowed character varying,
max_dl_speedinteger, bytes_ul_total bigint, bytes_dl_total bigint, ratio integer, flags character varying,
user_slotsinteger, leech_slots integer
);
---cut 8<---
I have only one row in this table where uid is '1001'.
wzdftpd=# select uid from users;
uid
------
1001
(1 row)
But instead of '1001' "uid" value is '134820376'. Where I was wrong?
-Roman Bogorodskiy [Novel]