/* * 从指定的DEX文件中加载一个类,使用类加载器去初始化一个类对象 */ static void Dalvik_dalvik_system_DexFile_defineClass(const u4* args, JValue* pResult) { StringObject* nameObj = (StringObject*) args[0]; Object* loader = (Object*) args[1]; int cookie = args[2]; ClassObject* clazz = NULL; DexOrJar* pDexOrJar = (DexOrJar*) cookie; DvmDex* pDvmDex; char* name; char* descriptor; name = dvmCreateCstrFromString(nameObj); descriptor = dvmDotToDescriptor(name); ALOGV("--- Explicit class load '%s' l=%p c=0x%08x", descriptor, loader, cookie); free(name); if (!validateCookie(cookie)) RETURN_VOID(); if (pDexOrJar->isDex) pDvmDex = dvmGetRawDexFileDex(pDexOrJar->pRawDexFile); else pDvmDex = dvmGetJarFileDex(pDexOrJar->pJarFile); /* once we load something, we can't unmap the storage */ pDexOrJar->okayToFree = false; clazz = dvmDefineClass(pDvmDex, descriptor, loader); Thread* self = dvmThreadSelf(); if (dvmCheckException(self)) { /* * If we threw a "class not found" exception, stifle it, since the * contract in the higher method says we simply return null if * the class is not found. */ Object* excep = dvmGetException(self); if (strcmp(excep->clazz->descriptor, "Ljava/lang/ClassNotFoundException;") == 0 || strcmp(excep->clazz->descriptor, "Ljava/lang/NoClassDefFoundError;") == 0) { dvmClearException(self); } clazz = NULL; } free(descriptor); RETURN_PTR(clazz); }
/* * private static String[] getClassNameList(int cookie) * * Returns a String array that holds the names of all classes in the * specified DEX file. */ static void Dalvik_dalvik_system_DexFile_getClassNameList(const u4* args, JValue* pResult) { int cookie = args[0]; DexOrJar* pDexOrJar = (DexOrJar*) cookie; DvmDex* pDvmDex; DexFile* pDexFile; ArrayObject* stringArray; Thread* self = dvmThreadSelf(); if (!validateCookie(cookie)) RETURN_VOID(); if (pDexOrJar->isDex) pDvmDex = dvmGetRawDexFileDex(pDexOrJar->pRawDexFile); else pDvmDex = dvmGetJarFileDex(pDexOrJar->pJarFile); assert(pDvmDex != NULL); pDexFile = pDvmDex->pDexFile; int count = pDexFile->pHeader->classDefsSize; stringArray = dvmAllocObjectArray(gDvm.classJavaLangString, count, ALLOC_DEFAULT); if (stringArray == NULL) { /* probably OOM */ ALOGD("Failed allocating array of %d strings\n", count); assert(dvmCheckException(self)); RETURN_VOID(); } int i; for (i = 0; i < count; i++) { const DexClassDef* pClassDef = dexGetClassDef(pDexFile, i); const char* descriptor = dexStringByTypeIdx(pDexFile, pClassDef->classIdx); char* className = dvmDescriptorToDot(descriptor); StringObject* str = dvmCreateStringFromCstr(className); dvmSetObjectArrayElement(stringArray, i, (Object *)str); dvmReleaseTrackedAlloc((Object *)str, self); free(className); } dvmReleaseTrackedAlloc((Object*)stringArray, self); RETURN_PTR(stringArray); }
/* * private static String[] getClassNameList(int cookie) * * Returns a String array that holds the names of all classes in the * specified DEX file. */ static void Dalvik_dalvik_system_DexFile_getClassNameList(const u4* args, JValue* pResult) { int cookie = args[0]; DexOrJar* pDexOrJar = (DexOrJar*) cookie; DvmDex* pDvmDex; DexFile* pDexFile; ArrayObject* stringArray; if (!validateCookie(cookie)) RETURN_VOID(); if (pDexOrJar->isDex) pDvmDex = dvmGetRawDexFileDex(pDexOrJar->pRawDexFile); else pDvmDex = dvmGetJarFileDex(pDexOrJar->pJarFile); assert(pDvmDex != NULL); pDexFile = pDvmDex->pDexFile; int count = pDexFile->pHeader->classDefsSize; stringArray = dvmAllocObjectArray(gDvm.classJavaLangString, count, ALLOC_DEFAULT); if (stringArray == NULL) RETURN_VOID(); // should be an OOM pending StringObject** contents = (StringObject**) stringArray->contents; int i; for (i = 0; i < count; i++) { const DexClassDef* pClassDef = dexGetClassDef(pDexFile, i); const char* descriptor = dexStringByTypeIdx(pDexFile, pClassDef->classIdx); char* className = dvmDescriptorToDot(descriptor); contents[i] = dvmCreateStringFromCstr(className, ALLOC_DEFAULT); dvmReleaseTrackedAlloc((Object*) contents[i], NULL); free(className); } dvmReleaseTrackedAlloc((Object*)stringArray, NULL); RETURN_PTR(stringArray); }
/* * private static void closeDexFile(int cookie) * * Release resources associated with a user-loaded DEX file. */ static void Dalvik_dalvik_system_DexFile_closeDexFile(const u4* args, JValue* pResult) { int cookie = args[0]; DexOrJar* pDexOrJar = (DexOrJar*) cookie; if (pDexOrJar == NULL) RETURN_VOID(); LOGV("Closing DEX file %p (%s)\n", pDexOrJar, pDexOrJar->fileName); if (!validateCookie(cookie)) RETURN_VOID(); /* * We can't just free arbitrary DEX files because they have bits and * pieces of loaded classes. The only exception to this rule is if * they were never used to load classes. * * If we can't free them here, dvmInternalNativeShutdown() will free * them when the VM shuts down. */ if (pDexOrJar->okayToFree) { u4 hash = dvmComputeUtf8Hash(pDexOrJar->fileName); dvmHashTableLock(gDvm.userDexFiles); if (!dvmHashTableRemove(gDvm.userDexFiles, hash, pDexOrJar)) { LOGW("WARNING: could not remove '%s' from DEX hash table\n", pDexOrJar->fileName); } dvmHashTableUnlock(gDvm.userDexFiles); LOGV("+++ freeing DexFile '%s' resources\n", pDexOrJar->fileName); dvmFreeDexOrJar(pDexOrJar); } else { LOGV("+++ NOT freeing DexFile '%s' resources\n", pDexOrJar->fileName); } RETURN_VOID(); }
bool QtWebKitCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url) { if (m_generalCookiesPolicy == CookieJar::IgnoreCookies || m_generalCookiesPolicy == CookieJar::ReadOnlyCookies) { return false; } bool added(false); for (int i = 0; i < cookieList.count(); ++i) { QNetworkCookie cookie(cookieList.at(i)); cookie.normalize(url); if (validateCookie(cookie, url) && canModifyCookie(cookie)) { if (m_keepMode == CookieJar::AskIfKeepMode) { showDialog(cookie, (m_cookieJar->hasCookie(cookie) ? CookieJar::UpdateCookie : CookieJar::InsertCookie)); } else { if (m_keepMode == CookieJar::KeepUntilExitMode) { cookie.setExpirationDate({}); } m_cookieJar->forceInsertCookie(cookie); added = true; } } } return added; }
/* * private static Class defineClass(String name, ClassLoader loader, * int cookie, ProtectionDomain pd) * * Load a class from a DEX file. This is roughly equivalent to defineClass() * in a regular VM -- it's invoked by the class loader to cause the * creation of a specific class. The difference is that the search for and * reading of the bytes is done within the VM. * * The class name is a "binary name", e.g. "java.lang.String". * * Returns a null pointer with no exception if the class was not found. * Throws an exception on other failures. */ static void Dalvik_dalvik_system_DexFile_defineClass(const u4* args, JValue* pResult) { StringObject* nameObj = (StringObject*) args[0]; Object* loader = (Object*) args[1]; int cookie = args[2]; Object* pd = (Object*) args[3]; ClassObject* clazz = NULL; DexOrJar* pDexOrJar = (DexOrJar*) cookie; DvmDex* pDvmDex; char* name; char* descriptor; name = dvmCreateCstrFromString(nameObj); descriptor = dvmDotToDescriptor(name); LOGV("--- Explicit class load '%s' 0x%08x\n", descriptor, cookie); free(name); if (!validateCookie(cookie)) RETURN_VOID(); if (pDexOrJar->isDex) pDvmDex = dvmGetRawDexFileDex(pDexOrJar->pRawDexFile); else pDvmDex = dvmGetJarFileDex(pDexOrJar->pJarFile); /* once we load something, we can't unmap the storage */ pDexOrJar->okayToFree = false; clazz = dvmDefineClass(pDvmDex, descriptor, loader); Thread* self = dvmThreadSelf(); if (dvmCheckException(self)) { /* * If we threw a "class not found" exception, stifle it, since the * contract in the higher method says we simply return null if * the class is not found. */ Object* excep = dvmGetException(self); if (strcmp(excep->clazz->descriptor, "Ljava/lang/ClassNotFoundException;") == 0 || strcmp(excep->clazz->descriptor, "Ljava/lang/NoClassDefFoundError;") == 0) { dvmClearException(self); } clazz = NULL; } /* * Set the ProtectionDomain -- do we need this to happen before we * link the class and make it available? If so, we need to pass it * through dvmDefineClass (and figure out some other * stuff, like where it comes from for bootstrap classes). */ if (clazz != NULL) { //LOGI("SETTING pd '%s' to %p\n", clazz->descriptor, pd); dvmSetFieldObject((Object*) clazz, gDvm.offJavaLangClass_pd, pd); } free(descriptor); RETURN_PTR(clazz); }
int main (int argc, char **argv) { unsigned errorCode; char cookieName[COOKIE_NAME_LENGTH +1]; char cookieValue[COOKIE_VALUE_LENGTH +1]; char cookieFileName[MAX_LENGTH_LONG_FILENAME +1]; char temp[20 +1]; userIdType callerOfProgramId, givenId, givenId2, givenId3, givenId4; if ((errorCode = mlCgiInitialize ()) != ML_CGI_OK) { if (errorCode == ML_CGI_FATAL_ERROR) showHtmlErrorPage (FATAL_ERROR); if (errorCode == ML_CGI_MEMORY_ALLOCATION_ERROR) showHtmlErrorPage (MEMORY_ALLOCATION_ERROR); if (errorCode == ML_CGI_INVALID_CONTENT_LENGTH) showHtmlErrorPage (INVALID_CONTENT_LENGTH); if (errorCode == ML_CGI_IO_ERROR) showHtmlErrorPage (CGI_IO_ERROR); if (errorCode == ML_CGI_INVALID_CONTENT_TYPE) showHtmlErrorPage (INVALID_CONTENT_TYPE); if (errorCode == ML_CGI_INVALID_REQUEST_METHOD) showHtmlErrorPage (INVALID_REQUEST_METHOD); exit (ML_CGI_OK); } if (!isCgi) { printf ("%s\n", showTextErrorMessage (IS_NOT_CGI)); exit (ML_CGI_OK); } mlCgiBeginHttpHeader ("text/html"); if ((errorCode = mlCgiGetFormStringNoNewLines ("cookieName", cookieName, COOKIE_NAME_LENGTH)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_FIELD_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_FIELD_LENGTH); exit (ML_CGI_OK); } if ((errorCode = mlCgiGetSpecificCookie (cookieName, COOKIE_NAME_LENGTH, cookieValue, COOKIE_VALUE_LENGTH)) != ML_CGI_OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_COOKIE_NAME) showHtmlErrorPage (INVALID_COOKIE_NAME); if (errorCode == ML_CGI_INVALID_COOKIE_VALUE) showHtmlErrorPage (INVALID_COOKIE_VALUE); if (errorCode == ML_CGI_COOKIE_NOT_FOUND) showHtmlErrorPage (COOKIE_NOT_FOUND); exit (ML_CGI_OK); } if ((errorCode = validateCookie (cookieName, cookieValue, mlCgiEnvironmentVariablesValues[ML_CGI_REMOTE_ADDRESS])) != OK) { if (errorCode != VALIDATE_COOKIE__COOKIE_FILE_DOES_NOT_EXIST) { if ((errorCode = getCookieValue (cookieName, cookieValue)) != OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } if ((errorCode = mlCgiSetCookie (cookieName, cookieValue, 0, NULL, NULL, NULL)) != ML_CGI_OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_COOKIE_NAME) showHtmlErrorPage (INVALID_COOKIE_NAME); if (errorCode == ML_CGI_INVALID_COOKIE_VALUE) showHtmlErrorPage (INVALID_COOKIE_VALUE); if (errorCode == ML_CGI_INVALID_COOKIE_EXPIRATION) showHtmlErrorPage (INVALID_COOKIE_EXPIRATION); exit (ML_CGI_OK); } if ((errorCode = getLongFilename (COOKIES_DIR, cookieName, cookieFileName)) != OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } remove (cookieFileName); } mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } if ((errorCode = mlCgiGetFormStringNoNewLines ("userId", temp, 20)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_USER_ID_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_USER_ID_LENGTH); exit (ML_CGI_OK); } givenId = strtoul (temp, NULL, 10); callerOfProgramId = strtoul (cookieName, NULL, 10); if ((errorCode = mlCgiGetFormStringNoNewLines ("userId2", temp, 20)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_USER_ID_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_USER_ID_LENGTH); exit (ML_CGI_OK); } givenId2 = strtoul (temp, NULL, 10); if ((errorCode = mlCgiGetFormStringNoNewLines ("userId3", temp, 20)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_USER_ID_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_USER_ID_LENGTH); exit (ML_CGI_OK); } givenId3 = strtoul (temp, NULL, 10); if ((errorCode = mlCgiGetFormStringNoNewLines ("userId4", temp, 20)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_USER_ID_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_USER_ID_LENGTH); exit (ML_CGI_OK); } givenId2 = strtoul (temp, NULL, 10); if ((callerOfProgramId != 0) && (givenId != callerOfProgramId) && (givenId2 != callerOfProgramId) && (givenId3 != callerOfProgramId) && (givenId4 != callerOfProgramId)) { mlCgiEndHttpHeader (); mlCgiFreeResources (); showHtmlErrorPage (YOU_CAN_ONLY_EDIT_YOUR_PARENT_RELATIONSHIP); exit (ML_CGI_OK); } mlCgiEndHttpHeader(); mlCgiFreeResources (); if ((errorCode = editParentRelationship (givenId, givenId2, givenId3, givenId4)) != OK) showHtmlErrorPage (errorCode); else showHtmlOKPage (); exit (ML_CGI_OK); }
int main (int argc, char **argv) { unsigned ret; char cookieName[COOKIE_NAME_LENGTH +1]; char cookieValue[COOKIE_VALUE_LENGTH +1]; char *cookieFileName; if ((ret = mlCgiInitialize ()) != ML_CGI_OK) { showHtmlErrorPage (E_SHOW_WELCOME_PAGE); exit (ML_CGI_OK); } if (!isCgi) { log_msg (error_messages[E_IS_NOT_CGI]); exit (ML_CGI_OK); } mlCgiBeginHttpHeader ("text/html"); if ((ret = mlCgiGetFormStringNoNewLines ("cookieName", cookieName, COOKIE_NAME_LENGTH)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); showHtmlErrorPage (E_SHOW_WELCOME_PAGE); exit (ML_CGI_OK); } if ((ret = mlCgiGetSpecificCookie (cookieName, COOKIE_NAME_LENGTH, cookieValue, COOKIE_VALUE_LENGTH)) != ML_CGI_OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (E_SHOW_WELCOME_PAGE); exit (ML_CGI_OK); } if ((ret = validateCookie (cookieName, cookieValue, mlCgiEnvironmentVariablesValues[ML_CGI_REMOTE_ADDRESS])) != OK) { if (ret != E_COOKIE_FILE_DOES_NOT_EXIST) { if ((ret = getCookieValue (cookieName, cookieValue)) != OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); showHtmlErrorPage (ret); exit (ML_CGI_OK); } if ((ret = mlCgiSetCookie (cookieName, cookieValue, 0, NULL, NULL, NULL)) != ML_CGI_OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (E_SET_COOKIE); exit (ML_CGI_OK); } if ((cookieFileName = getLongFilename (COOKIES_DIR, cookieName)) == NULL) { mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (E_SHOW_WELCOME_PAGE); exit (ML_CGI_OK); } remove (cookieFileName); } mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (ret); exit (ML_CGI_OK); } mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlWelcomePage (cookieName); exit (ML_CGI_OK); }
/************************************************** * Authentication phase * * - If AuthType != Persona, do nothing * - Handle POSTed assertions ("null" -> logout) * - If we have a cookie, set up user context **************************************************/ static int Auth_persona_check_cookie(request_rec *r) { char *szCookieValue=NULL; char *szRemoteIP=NULL; const char *assertion=NULL; if (!persona_authn_active(r)) { return DECLINED; } ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, r, ERRTAG "Auth_persona_check_cookie"); // We'll trade you a valid assertion for a session cookie! // this is a programmatic XHR request. persona_config_t *conf = ap_get_module_config(r->server->module_config, &authnz_persona_module); assertion = apr_table_get(r->headers_in, PERSONA_ASSERTION_HEADER); if (assertion) { if (strcmp(r->method, "POST")) { r->status = HTTP_METHOD_NOT_ALLOWED; ap_set_content_type(r, "application/json"); const char *error = "{\"status\": \"failure\", \"reason\":" "\"login must be performed with POST\"}"; ap_rwrite(error, strlen(error), r); return DONE; } if (!strcmp(assertion, "null")) { sendResetCookie(r); r->status = HTTP_OK; const char *status = "{\"status\": \"okay\"}"; ap_set_content_type(r, "application/json"); ap_rwrite(status, strlen(status), r); return DONE; } VerifyResult res = processAssertion(r, assertion); ap_log_rerror(APLOG_MARK,APLOG_DEBUG|APLOG_NOERRNO, 0,r,ERRTAG "Assertion received '%s'", assertion); if (res->verifiedEmail) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, 0, r, ERRTAG "email '%s' verified, vouched for by issuer '%s'", res->verifiedEmail, res->identityIssuer); Cookie cookie = apr_pcalloc(r->pool, sizeof(struct _Cookie)); cookie->verifiedEmail = res->verifiedEmail; cookie->identityIssuer = res->identityIssuer; cookie->created = apr_time_sec(r->request_time); sendSignedCookie(r, conf->secret, cookie); return DONE; } else { assert(res->errorResponse != NULL); r->status = HTTP_INTERNAL_SERVER_ERROR; ap_set_content_type(r, "application/json"); ap_rwrite(res->errorResponse, strlen(res->errorResponse), r); // upon assertion verification failure we return JSON explaining why return DONE; } } // handle logout via LogoutPath hit before letting valid cookies through if (conf->logout_path->len && !strncmp(r->uri, conf->logout_path->data, conf->logout_path->len)) { return process_logout(r); } // if there's a valid cookie, allow the user through szCookieValue = extractCookie(r, conf->secret, PERSONA_COOKIE_NAME); Cookie cookie = NULL; if (szCookieValue && (cookie = validateCookie(r, conf->secret, szCookieValue))) { r->user = (char *) cookie->verifiedEmail; apr_table_setn(r->notes, PERSONA_ISSUER_NOTE, cookie->identityIssuer); apr_table_setn(r->subprocess_env, "REMOTE_USER", cookie->verifiedEmail); ap_log_rerror(APLOG_MARK, APLOG_INFO|APLOG_NOERRNO, 0, r, ERRTAG "Valid auth cookie found, passthrough"); ap_custom_response(r, 401, (const char*) build_error_html); ap_custom_response(r, 403, (const char*) build_error_html); return OK; } ap_log_rerror(APLOG_MARK, APLOG_INFO|APLOG_NOERRNO, 0, r, ERRTAG "Persona cookie not found; not authorized! RemoteIP:%s",szRemoteIP); r->status = HTTP_UNAUTHORIZED; ap_set_content_type(r, "text/html"); ap_rwrite(src_signin_html, sizeof(src_signin_html), r); ap_rprintf(r, "var loggedInUser = undefined;\n"); ap_rwrite(PERSONA_END_PAGE, sizeof(PERSONA_END_PAGE), r); return DONE; }
int main (int argc, char **argv) { unsigned errorCode; char cookieName[COOKIE_NAME_LENGTH +1]; char cookieValue[COOKIE_VALUE_LENGTH +1]; char cookieFileName[MAX_LENGTH_LONG_FILENAME +1]; char temp[10 +1]; char givenId[20 +1]; userDataType userData; userIdType callerOfProgramId; if ((errorCode = mlCgiInitialize ()) != ML_CGI_OK) { if (errorCode == ML_CGI_FATAL_ERROR) showHtmlErrorPage (FATAL_ERROR); if (errorCode == ML_CGI_MEMORY_ALLOCATION_ERROR) showHtmlErrorPage (MEMORY_ALLOCATION_ERROR); if (errorCode == ML_CGI_INVALID_CONTENT_LENGTH) showHtmlErrorPage (INVALID_CONTENT_LENGTH); if (errorCode == ML_CGI_IO_ERROR) showHtmlErrorPage (CGI_IO_ERROR); if (errorCode == ML_CGI_INVALID_CONTENT_TYPE) showHtmlErrorPage (INVALID_CONTENT_TYPE); if (errorCode == ML_CGI_INVALID_REQUEST_METHOD) showHtmlErrorPage (INVALID_REQUEST_METHOD); exit (ML_CGI_OK); } if (!isCgi) { printf ("%s\n", showTextErrorMessage (IS_NOT_CGI)); exit (ML_CGI_OK); } mlCgiBeginHttpHeader ("text/html"); if ((errorCode = mlCgiGetFormStringNoNewLines ("cookieName", cookieName, COOKIE_NAME_LENGTH)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_FIELD_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_FIELD_LENGTH); exit (ML_CGI_OK); } if ((errorCode = mlCgiGetSpecificCookie (cookieName, COOKIE_NAME_LENGTH, cookieValue, COOKIE_VALUE_LENGTH)) != ML_CGI_OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_COOKIE_NAME) showHtmlErrorPage (INVALID_COOKIE_NAME); if (errorCode == ML_CGI_INVALID_COOKIE_VALUE) showHtmlErrorPage (INVALID_COOKIE_VALUE); if (errorCode == ML_CGI_COOKIE_NOT_FOUND) showHtmlErrorPage (COOKIE_NOT_FOUND); exit (ML_CGI_OK); } if ((errorCode = validateCookie (cookieName, cookieValue, mlCgiEnvironmentVariablesValues[ML_CGI_REMOTE_ADDRESS])) != OK) { if (errorCode != VALIDATE_COOKIE__COOKIE_FILE_DOES_NOT_EXIST) { if ((errorCode = getCookieValue (cookieName, cookieValue)) != OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } if ((errorCode = mlCgiSetCookie (cookieName, cookieValue, 0, NULL, NULL, NULL)) != ML_CGI_OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_COOKIE_NAME) showHtmlErrorPage (INVALID_COOKIE_NAME); if (errorCode == ML_CGI_INVALID_COOKIE_VALUE) showHtmlErrorPage (INVALID_COOKIE_VALUE); if (errorCode == ML_CGI_INVALID_COOKIE_EXPIRATION) showHtmlErrorPage (INVALID_COOKIE_EXPIRATION); exit (ML_CGI_OK); } if ((errorCode = getLongFilename (COOKIES_DIR, cookieName, cookieFileName)) != OK) { mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } remove (cookieFileName); } mlCgiEndHttpHeader(); mlCgiFreeResources (); showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } if ((errorCode = mlCgiGetFormStringNoNewLines ("userId", givenId, 20)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_USER_ID_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_USER_ID_LENGTH); exit (ML_CGI_OK); } userData.userId = strtoul (givenId , NULL, 10); callerOfProgramId = strtoul (cookieName, NULL, 10); if ((callerOfProgramId != 0) && (userData.userId != callerOfProgramId)) { mlCgiEndHttpHeader (); mlCgiFreeResources (); showHtmlErrorPage (ONLY_THE_ADMINISTRATOR_CAN_EDIT_DATA_OF_OTHERS_USERS); exit (ML_CGI_OK); } if ((errorCode = getDataFromId (userData.userId, &userData)) != OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } if ((errorCode = mlCgiGetFormStringNoNewLines ("name", userData.name, MAX_LENGTH_NAME)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_NAME_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_NAME_LENGTH); exit (ML_CGI_OK); } if (userData.category == webUser) { if ((errorCode = mlCgiGetFormStringNoNewLines ("email", userData.email, MAX_LENGTH_EMAIL)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_EMAIL_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_EMAIL_LENGTH); exit (ML_CGI_OK); } } else { errorCode = mlCgiGetFormStringNoNewLines ("email", userData.email, MAX_LENGTH_EMAIL); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.email[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_EMAIL_LENGTH); exit (ML_CGI_OK); } } errorCode = mlCgiGetFormStringNoNewLines ("homepage", userData.homepage, MAX_LENGTH_HOMEPAGE); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.homepage[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_HOMEPAGE_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("street", userData.address.street, MAX_LENGTH_STREET); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.street[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_STREET_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("homeNumber", userData.address.homeNumber, MAX_LENGTH_HOME_NUMBER); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.homeNumber[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_HOME_NUMBER_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("complement", userData.address.complement, MAX_LENGTH_COMPLEMENT); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.complement[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_COMPLEMENT_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("district", userData.address.district, MAX_LENGTH_DISTRICT); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.district[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_DISTRICT_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("city", userData.address.city, MAX_LENGTH_CITY); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.city[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_CITY_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("state", userData.address.state, MAX_LENGTH_STATE); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.homeNumber[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_STATE_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("country", userData.address.country, MAX_LENGTH_COUNTRY); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.country[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_COUNTRY_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("zipCode", userData.address.zipCode, MAX_LENGTH_ZIP_CODE); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.address.zipCode[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_ZIP_CODE_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("telNumber", userData.telNumber, MAX_LENGTH_TEL_NUMBER); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.telNumber[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_TEL_NUMBER_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("cellNumber", userData.cellNumber, MAX_LENGTH_CELL_NUMBER); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.cellNumber[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_CELL_NUMBER_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("gender", temp, 10); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.gender = notAnswered; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_GENDER_LENGTH); exit (ML_CGI_OK); } if (!strcmp (temp, "male")) userData.gender = male; else if (!strcmp (temp, "female")) userData.gender = female; else userData.gender = notAnswered; errorCode = mlCgiGetFormStringNoNewLines ("relationshipStatus", temp, 10); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.relationshipStatus = notGiven; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_RELATIONSHIP_STATUS_LENGTH); exit (ML_CGI_OK); } if (!strcmp (temp, "single")) userData.relationshipStatus = single; else if (!strcmp (temp, "married")) userData.relationshipStatus = married; else if (!strcmp (temp, "widowed")) userData.relationshipStatus = widowed; else userData.relationshipStatus = notGiven; if ((errorCode = mlCgiGetFormStringNoNewLines ("birthday", userData.birthday, MAX_LENGTH_BIRTHDAY)) != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) showHtmlErrorPage (FORM_BIRTHDAY_NOT_FOUND); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_BIRTHDAY_LENGTH); exit (ML_CGI_OK); } errorCode = mlCgiGetFormStringNoNewLines ("description", userData.description, MAX_LENGTH_DESCRIPTION); if (errorCode == ML_CGI_FORM_FIELD_NOT_FOUND) userData.description[0] = EOS; if (errorCode != ML_CGI_OK) { mlCgiEndHttpHeader (); mlCgiFreeResources (); if (errorCode == ML_CGI_INVALID_FORM_LENGTH) showHtmlErrorPage (INVALID_FORM_DESCRIPTION_LENGTH); exit (ML_CGI_OK); } mlCgiEndHttpHeader(); mlCgiFreeResources (); if (userData.category == relative) { userData.userName[0] = EOS; userData.plainPass[0] = EOS; userData.encryptedPass[0] = EOS; } else { strcpy (userData.plainPass, "noPass"); if ((errorCode = encodePassword (userData.plainPass, userData.encryptedPass)) != OK) { showHtmlErrorPage (errorCode); exit (ML_CGI_OK); } } if ((errorCode = editUserData (&userData)) != OK) showHtmlErrorPage (errorCode); else showHtmlOKPage (); exit (ML_CGI_OK); }
bool sipQNetworkCookieJar::sipProtectVirt_validateCookie(bool sipSelfWasArg,const QNetworkCookie& a0,const QUrl& a1) const { return (sipSelfWasArg ? QNetworkCookieJar::validateCookie(a0,a1) : validateCookie(a0,a1)); }