PIN generation code

This commit is contained in:
tokslaw7
2024-02-04 23:47:30 +00:00
parent fbf20cf60b
commit 658e93c6ee
+27 -5
View File
@@ -6,6 +6,8 @@
#include "email.h"
#include "safestring.h"
#include <string>
#include <iostream>
#include <cstdlib>
#include "pgsql.h"
#include "pgsql_wrapper.h"
#include <curl/curl.h>
@@ -1156,9 +1158,26 @@ wrenchboard=> select * from members_family;
return ret;
}
/* WARNING: Unsafe function without buffer length check! */
void GeneratePIN(int length, char *buffer) {
if (length < 2) {
sprintf(buffer, "%d", rand() % 10); // if the PIN length is less than 2 - make a single digit
return;
}
// leading number must not be 0
long long randomNumber = (rand() % 9) + 1;
const int n = length - 1;
for (int i = 0; i<n; i++) {
randomNumber *= 10;
randomNumber += rand() % 10;
}
sprintf(buffer, "%0*ld", length, randomNumber);
}
long WrenchFamilyInitializeAccount(CVars in, CVars &out){
const PGresult *res;
char username[7] = "";
const PGresult *res;
char username[7] = "";
logfmt(logINFO, "WrenchFamilyInitializeAccount()");
try {
@@ -1172,12 +1191,15 @@ char username[7] = "";
r1 = 1000+(rand()%9000);
pgsql_exec("UPDATE members_family SET pin='%s' WHERE id=%lu", r1, in["family_id"].Long() );
*/
char pin[5]; // 4 digits + \0
bzero(pin, sizeof (pin));
GeneratePIN(4, pin);
pgsql_exec("UPDATE members_family SET pin='1234' WHERE id=%lu", in["family_id"].Long() );
pgsql_exec("UPDATE members_family SET pin='%s' WHERE id=%lu", pin, in["family_id"].Long() );
load_db_record(out, "SELECT * FROM members_family WHERE id = %lu", in["family_id"].Long());
return 0;
return 0;
}
@@ -1188,4 +1210,4 @@ return 0;
#define WRENCHBOARD_FAMILY_ADD 22015
#define WRENCHBOARD_FAMILY_UPDATE 22020
#define WRENCHBOARD_FAMILY_MANAGE 22025
*/
*/