pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Roman Bogorodskiy <bogorodskiy@inbox.ru>
To: pgsql-interfaces@postgresql.org
Subject: troubles with getting data from tables
Date: Tue, 23 Sep 2003 20:17:50 +0400
Message-ID: <20030923201750.7cacf851.bogorodskiy@inbox.ru> (raw)

  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 character varying NOT NULL,
    rights character varying NOT NULL,
    uid int4 NOT NULL,
    ip_allowed character varying,
    max_dl_speed integer,
    bytes_ul_total bigint,
    bytes_dl_total bigint,
    ratio integer,
    flags character varying,
    user_slots integer,
    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]




view thread (3+ messages)  latest in thread

Message-ID: <20030923201750.7cacf851.bogorodskiy@inbox.ru>
Permalink:  ../20030923201750.7cacf851.bogorodskiy@inbox.ru/
Also on:    postgresql.org/message-id/20030923201750.7cacf851.bogorodskiy@inbox.ru

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: bogorodskiy@inbox.ru
  Subject: Re: troubles with getting data from tables
  In-Reply-To: <20030923201750.7cacf851.bogorodskiy@inbox.ru>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox