static void build_nomls_vecs() { const void *item; const apol_vector_t *v = NULL; size_t i, str_len = 0; char *str = NULL; v = poldiff_get_user_vector(diff); for (i = 0; i < apol_vector_get_size(v); ++i) { item = apol_vector_get_element(v, i); poldiff_user_t *u = (poldiff_user_t *) item; const char *name = poldiff_user_get_name(u); const apol_vector_t *added_roles = poldiff_user_get_added_roles(u); const apol_vector_t *removed_roles = poldiff_user_get_removed_roles(u); if (apol_vector_get_size(added_roles) == 0 && apol_vector_get_size(removed_roles) == 0) { apol_vector_append(unchanged_users_v, strdup(name)); } else { char *added_roles_str = vector_to_string(added_roles, "", " +"); char *removed_roles_str = vector_to_string(removed_roles, "-", " "); apol_str_appendf(&str, &str_len, "%s %s%s", name, added_roles_str, removed_roles_str); free(added_roles_str); free(removed_roles_str); apol_str_trim(str); apol_vector_append(changed_users_v, str); str = NULL; str_len = 0; } } }
static void daemon_change_password(std::string &user, std::string &base64_rsa_md5saltsum_old_password, std::string &base64_rsa_md5saltsum_new_password) { std::vector<unsigned char> v; base64_decode(base64_rsa_md5saltsum_old_password, v); std::vector<unsigned char> v2; rsa_decrypt(v, v2, RSA_Public_Key_d, RSA_Public_Key_n); std::string old_passwd; vector_to_string(v2, old_passwd); base64_decode(base64_rsa_md5saltsum_new_password, v); rsa_decrypt(v, v2, RSA_Public_Key_d, RSA_Public_Key_n); std::string new_passwd; vector_to_string(v2, new_passwd); if (new_passwd.length()!=32) { daemon_printf( "%d wrong new password\n", CODE_DENIED ); return; } if (init_database()) { daemon_printf( "%d Connect to MySQL failed!\n", CODE_DENIED ); return; } std::string sql; if (auth_user != "root") { sql = "SELECT user_md5saltpassword FROM stardict_users WHERE username="******"%d Query failed!\n", CODE_DENIED ); return; } MySQLResult *res = stardictdMain.conn.getResult(); if (!res) { daemon_printf( "%d Get result failed!\n", CODE_DENIED ); return; } DB_ROW row = res->fetchRow(); if (!row) { res->destroy(); daemon_printf( "%d user doesn't exist\n", CODE_DENIED ); return; } if (old_passwd != row[0]) { res->destroy(); daemon_printf( "%d old password is wrong\n", CODE_DENIED ); return; } res->destroy(); } sql = "UPDATE stardict_users SET user_md5saltpassword="******" WHERE username="******"%d Query failed!\n", CODE_DENIED ); return; } daemon_printf( "%d\n", CODE_OK ); }
std::string autobroadcast_incompatible_shapes::error_str(const ngraph::Shape& shape1, const ngraph::Shape& shape2) { ostringstream os; os << "Auto-broadcast not possible for these input shapes:" << " shape1=" << vector_to_string(shape1) << " shape2=" << vector_to_string(shape2); return os.str(); }
std::u32string value::to_string() const { switch (m_type) { case type::boolean: return m_value_boolean ? U"true" : U"false"; case type::number: return number_to_string(*m_value_number); case type::vector: return vector_to_string(*m_value_vector); case type::string: return *m_value_string; case type::quote: return m_value_quote->to_source(); case type::month: return month_to_string(m_value_month); case type::weekday: return weekday_to_string(m_value_weekday); case type::date: return date_to_string(*m_value_date); case type::time: return time_to_string(*m_value_time); } return U""; }
std::string file_specification::image(void) const { std::string result = m_drive; if (absolute()) result += preferred_separator; if (!m_path.empty()) result += vector_to_string(m_path, std::string(1,preferred_separator)); else if (relative()) result += '.'; if (!m_filename.empty()) { result += preferred_separator; result += m_filename; } return result; }
void setup_word_to_print (char *type, int cp, int str, struct pcp_vars *pcp) { register int *y = y_address; #if defined (GROUP) vector_to_string (cp, str, pcp); /* may need to set up pointer to this string at a later stage */ ++str; printf ("The %s is ", type); if (y[str] == 0) print_word (0, pcp); else print_word (-str + 1, pcp); #endif }
void evaluate_list (int *queue, int *queue_length, int *list, int depth, struct pcp_vars *pcp) { register int *y = y_address; register int lastg = pcp->lastg; register int cp = pcp->lused; register int cp1 = cp + lastg; register int cp2 = cp1 + lastg; register int i, a; for (i = 1; i <= lastg; ++i) y[cp + i] = 0; while (depth > 0) { a = list[depth]; for (i = 1; i <= lastg; ++i) y[cp1 + i] = 0; y[cp1 + a] = 1; /* compute a^power_of_entry */ power (power_of_entry, cp1, pcp); vector_to_string (cp1, cp2, pcp); if (y[cp2 + 1] != 0) collect (-cp2, cp, pcp); --depth; } #ifdef DEBUG print_array (y, cp + 1, cp + lastg + 1); printf ("The result is "); print_array (y, cp + 1, cp + lastg + 1); #endif /* now compute word^exponent */ power (exponent, cp, pcp); setup_word_to_print ("result of collection", cp, cp + lastg + 1, pcp); /* if (pcp->m != 0) */ setup_echelon (queue, queue_length, cp, pcp); }
Variable::Variable(const std::vector<std::string>& name) { m_name = vector_to_string (name); m_name_vector = name; }
void power (int exp, int cp, struct pcp_vars *pcp) { register int *y = y_address; register int p = pcp->p; register int lastg = pcp->lastg; register int x = cp; register int a = pcp->submlg - (lastg + 1); register int b = a - (lastg + 1); register int z = b - (lastg + 1); register int q, r, pp, nn; register int i; if (exp == 1) return; /* nn is the exponent requested */ nn = exp; /* first consider small primes */ if (p == 2 || p == 3) { /* extract all powers of the prime from the exponent */ while (MOD (nn, p) == 0) { nn /= p; /* pack word in X into string for multiplication p - 1 times */ vector_to_string (x, a, pcp); if (y[a + 1] == 0) return; /* now multiply p - 1 times to get X^p */ for (i = 1; i <= p - 1; ++i) { collect (-a, x, pcp); } } if (nn == 1) return; /* have extracted all powers of p from exponent - now do rest using prime p expansion */ /* move X into Z, set X to 1 */ copy_array (x, lastg, z, pcp); zero_array (x, lastg, pcp); while (nn > 0) { r = MOD (nn, p); nn /= p; /* move Z into A to multiply onto Z p - 1 times and onto X r times */ vector_to_string (z, a, pcp); /* now calculate Z = Z^p and X = X * Z^r */ if (y[a + 1] != 0) { for (i = 1; i <= p - 1; ++i) { if (i <= r) collect (-a, x, pcp); collect (-a, z, pcp); } } } } /* for larger primes, use prime p decomposition and subsequent binary expansion */ else { /* move X into Z and set X to 1 */ vector_to_string (x, z, pcp); zero_array (x, lastg, pcp); while (nn > 0) { /* move word w in Z into A, and set Z to 1; A will square each iteration, and Z will accumulate some of these powers to end up with w^p at end of while loop */ string_to_vector (z, a, pcp); zero_array (z, lastg, pcp); q = nn / p; r = MOD (nn, p); pp = p; /* Now use binary expansion of both PP (ie p) and remainder R to accumulate w^p in Z and w^R onto X from squaring of w. Must continue until we have last w^R on X or until we get w^p in Z if there is any remaining exponent (ie Q > 0) */ while (r > 0 || (pp > 0 && q > 0)) { /* collect onto answer if needed (ie R = 1) */ if (MOD (r, 2) == 1) { copy_array (a, lastg, b, pcp); if (y[x + 1] > 0) { collect (-x, b, pcp); } vector_to_string (b, x, pcp); } /* collect onto Z for next power of w if next iteration reqd */ if (MOD (pp, 2) == 1 && q > 0) { copy_array (a, lastg, b, pcp); if (y[z + 1] > 0) { collect (-z, b, pcp); } vector_to_string (b, z, pcp); } r = r >> 1; pp = pp >> 1; /* if powers still needed for answer X or for w^p in Z for another iteration (ie Q > 0) then square A by unpacking into exponent vector B, collecting A and B, then repacking into A */ if (r > 0 || (pp > 0 && q > 0)) { /* square A */ vector_to_string (a, b, pcp); if (y[b + 1] > 0) { collect (-b, a, pcp); } } } nn = q; } /* now X is the answer as a string, so convert to exponent vector */ string_to_vector (x, b, pcp); copy_array (b, lastg, x, pcp); } }
static void daemon_register(std::string &user, std::string &base64_rsa_md5saltsum_password, std::string &email) { std::vector<unsigned char> v; base64_decode(base64_rsa_md5saltsum_password, v); std::vector<unsigned char> v2; rsa_decrypt(v, v2, RSA_Public_Key_d, RSA_Public_Key_n); std::string password; vector_to_string(v2, password); if (user.length()>16 || password.length()!=32 || strchr(email.c_str(), '@')==NULL) { daemon_printf( "%d invalid parameter\n", CODE_DENIED ); return; } if (init_database()) { daemon_printf( "%d Connect to MySQL failed!\n", CODE_DENIED ); return; } std::string sql; // Original insert sql code. sql = "INSERT INTO stardict_users (username, user_md5saltpassword) VALUES("; AppendMysql(sql, user.c_str()); sql += ","; AppendMysql(sql, password.c_str()); sql += ")"; if (stardictdMain.conn.query(sql.c_str(), sql.length())) { daemon_printf( "%d user already exists\n", CODE_DENIED ); return; } stardictdMain.conn.lastInsertID(userID); sql = "INSERT INTO user_basic (id, register_time, email) VALUES("; sql += userID; sql += ","; gchar *register_time = g_strdup_printf("%u", (unsigned int)time(NULL)); sql += register_time; g_free(register_time); sql += ","; AppendMysql(sql, email.c_str()); sql += ")"; std::string text; if (stardictdMain.conn.query(sql.c_str(), sql.length())) { text = "Init user_basic table failed: "; text += sql; stardictdMain.logger->log(LOG_ERROR, text.c_str()); } // Code to cooperate with phpBB3 forum. // It works in PROTOCOL_VERSION_0.3 ago, but don't works in PROTOCOL_VERSION_0.4 now. As change "user_password" to "user_md5saltpassword". // // /*gchar *register_time = g_strdup_printf("%u", (unsigned int)time(NULL)); sql = "INSERT INTO `stardict_users`(`user_type`, `group_id`, `user_permissions`, `user_perm_from`, `user_ip`, `user_regdate`, `username`, `username_clean`, `user_password`, `user_passchg`, `user_pass_convert`, `user_email`, `user_email_hash`, `user_birthday`, `user_lastvisit`, `user_lastmark`, `user_lastpost_time`) VALUES("; sql += "0 ,2, '', 0, ''"; sql += ","; sql += register_time; sql += ","; AppendMysql(sql, user.c_str()); sql += ","; AppendMysql(sql, user.c_str()); sql += ","; AppendMysql(sql, password.c_str()); sql += ","; sql += register_time; sql += ","; sql += "0"; sql += ","; AppendMysql(sql, email.c_str()); sql += ","; sql += "'0' ,''"; sql += ","; sql += register_time; sql += ","; sql += register_time; sql += ","; sql += "'0'"; sql += ")"; if (stardictdMain.conn.query(sql.c_str(), sql.length())) { daemon_printf( "%d user already exists\n", CODE_DENIED ); g_free(register_time); return; } stardictdMain.conn.lastInsertID(userID); sql = "INSERT INTO user_basic (id, register_time, email) VALUES("; sql += userID; sql += ","; sql += register_time; g_free(register_time); sql += ","; AppendMysql(sql, email.c_str()); sql += ")"; std::string text; if (stardictdMain.conn.query(sql.c_str(), sql.length())) { text = "Init user_basic table failed: "; text += sql; stardictdMain.logger->log(LOG_ERROR, text.c_str()); } sql = "INSERT INTO `stardict_user_group` (`user_id`, `group_id`,`group_leader`, `user_pending`) VALUES("; sql += userID; sql += ","; sql += "2"; sql += ","; sql += "0"; sql += ","; sql += "0"; sql += ")"; if (stardictdMain.conn.query(sql.c_str(), sql.length())) { text = "Init stardict_user_group table failed: "; text += sql; stardictdMain.logger->log(LOG_ERROR, text.c_str()); }*/ text = "Register user: "******"%d registered\n", CODE_OK ); }
bool _check_for_loops() { std::vector<int> visited_stream; std::map<int, size_t> when_visited; // (v at k) say, that k is already visited at position v int idx = idx_decode(next_free.load()); int last = -1; while( idx != -1 ) { if( when_visited.find(idx) != when_visited.end() ) { // we've already seen this value, so WE HAVE LOOP tprintf(tinfra::err, "T[%i]: _check_for_loops %i->%i is a loop, whole vector\n", get_thread_string(), last, idx, vector_to_string(visited_stream)); return false; } when_visited[idx] = visited_stream.size(); visited_stream.push_back(idx); last = idx; idx = item_next_free_idx(idx); } return true; }