int gfc_validate_kind (bt type, int kind, bool may_fail) { int rc; switch (type) { case BT_REAL: /* Fall through */ case BT_COMPLEX: rc = validate_real (kind); break; case BT_INTEGER: rc = validate_integer (kind); break; case BT_LOGICAL: rc = validate_logical (kind); break; case BT_CHARACTER: rc = validate_character (kind); break; default: gfc_internal_error ("gfc_validate_kind(): Got bad type"); } if (rc < 0 && !may_fail) gfc_internal_error ("gfc_validate_kind(): Got bad kind"); return rc; }
GkmXdgTrust* gkm_xdg_trust_create_for_assertion (GkmModule *module, GkmManager *manager, GkmTransaction *transaction, CK_ATTRIBUTE_PTR attrs, CK_ULONG n_attrs) { CK_ATTRIBUTE_PTR serial, issuer, cert; GkmXdgTrust *trust; g_return_val_if_fail (GKM_IS_MODULE (module), NULL); g_return_val_if_fail (GKM_IS_MANAGER (manager), NULL); g_return_val_if_fail (attrs || !n_attrs, NULL); serial = gkm_attributes_find (attrs, n_attrs, CKA_SERIAL_NUMBER); issuer = gkm_attributes_find (attrs, n_attrs, CKA_ISSUER); cert = gkm_attributes_find (attrs, n_attrs, CKA_X_CERTIFICATE_VALUE); /* A trust object with just serial + issuer */ if (serial != NULL && issuer != NULL) { if (cert != NULL) { gkm_transaction_fail (transaction, CKR_TEMPLATE_INCONSISTENT); return NULL; } if (!validate_der (issuer, "Name") || !validate_integer (serial)) { gkm_transaction_fail (transaction, CKR_ATTRIBUTE_VALUE_INVALID); return NULL; } trust = create_trust_for_reference (module, manager, serial, issuer); /* A trust object with a full certificate */ } else if (cert != NULL) { if (serial != NULL || issuer != NULL) { gkm_transaction_fail (transaction, CKR_TEMPLATE_INCONSISTENT); return NULL; } if (!validate_der (cert, "Certificate")) { gkm_transaction_fail (transaction, CKR_ATTRIBUTE_VALUE_INVALID); return NULL; } trust = create_trust_for_complete (module, manager, cert); /* Not sure what this is */ } else { gkm_transaction_fail (transaction, CKR_TEMPLATE_INCOMPLETE); return NULL; } gkm_attributes_consume (attrs, n_attrs, CKA_X_CERTIFICATE_VALUE, CKA_ISSUER, CKA_SERIAL_NUMBER, G_MAXULONG); return trust; }
MRESULT CreInstDlg::wmCommand(HM12){ USE_HM12; USHORT command; char typename[MAXNAMELENGTH]=""; char propname[MAXNAMELENGTH]=""; char newvalue[MAXNAMELENGTH]=""; int index,dbtype,oktype,i; ODB_INT intval; ODB_REAL realval; ODB_SET coll; object *obj,*o; command=SHORT1FROMMP( mp1 ) ; switch(command) { case DID_OK: //ok button pressed. Create object index=WinQueryLboxSelectedItem(hwndlbtypes); WinQueryLboxItemText(hwndlbtypes,index,typename,MAXNAMELENGTH); if (strlen(typename)<1) { //type not specified WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "A type must be spec.", (PCH)"Alert",0,MB_NOICON|MB_OK); break; } else { obj=odb.create_instance(typename); if (obj==NULL) { //object could not be created, possibly because //extentless type selectd WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Could not create object", (PCH)"Alert",0,MB_NOICON|MB_OK); break; }; i=WinQueryLboxCount(hwndassignedprop); i--; while(i>=0){ //check that the data for each prop is ok //and set the properies for the object WinQueryLboxItemText(hwndassignedprop,i,propname,MAXNAMELENGTH); WinQueryLboxItemText(hwndassignedprop,i,propname,MAXNAMELENGTH); WinQueryLboxItemText(hwndpropval,i,newvalue,MAXNAMELENGTH); dbtype=odb.getpropertytype(typename,propname); if (dbtype==_INT_) { validate_integer(newvalue,intval); (*obj).setproperty_value(propname,intval); }; if (dbtype==_OTHER_) { validate_integer(newvalue,intval); o=odb.getobjectwithoid("Usertypes",intval); (*obj).setproperty_value(propname,o); }; if (dbtype==_REAL_) { validate_real(newvalue,realval); (*obj).setproperty_value(propname,realval); }; if (dbtype==_COLLECTION_){ coll=new collection(_OTHER_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_INT_COLLECTION_){ coll=new collection(_INT_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_REAL_COLLECTION_){ coll=new collection(_REAL_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_CHAR_COLLECTION_){ coll=new collection(_CHAR_); if (validate_set(newvalue,&odb,coll)<0) (*coll).~collection(); (*obj).setproperty_value(propname,coll); }; if (dbtype==_CHAR_) (*obj).setproperty_value(propname,newvalue); i--; }; //end while all properties set. //deleta all unassigned praps (*this).clearlbox(hwndassignedprop); clearlbox(hwndpropval); clearlbox(hwndlbprops); WinSetWindowText(hwndviewval,(PSZ)""); populate_props(hwndlbprops,typename, odb); noassignedprops=0; //no assigned properties anymore WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Instance created.", (PCH)"Success",0,MB_NOICON|MB_OK); }; //else //create the object and set properties return (MRESULT) FALSE; //break; case DID_CANCEL: //quit this window if(WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Quit this window?", (PCH)"Sanity Check",0, MB_NOICON|MB_OKCANCEL)==MBID_OK) WinDismissDlg( hwnd, TRUE ); // Removes the dialog box return (MRESULT) FALSE; case PB_SET: //assign property a value. The prop is moved to assignedprops //and value is validated and moved to hidden listbox index=WinQueryLboxSelectedItem(hwndlbtypes); //typename WinQueryLboxItemText(hwndlbtypes,index,typename,MAXNAMELENGTH); index=WinQueryLboxSelectedItem(hwndlbprops); //propname WinQueryLboxItemText(hwndlbprops,index,propname,MAXNAMELENGTH); WinQueryWindowText(hwndnewvalue,MAXNAMELENGTH,newvalue); dbtype=odb.getpropertytype(typename,propname); if (dbtype==_INT_) oktype=validate_integer(newvalue,intval); if (dbtype==_OTHER_){ oktype=validate_integer(newvalue,intval); if (oktype!=0) { //check that there is an object with the oid obj=odb.getobjectwithoid("Usertypes",intval); if (obj==NULL) oktype=0; } }; if (dbtype==_REAL_) oktype=validate_real(newvalue,realval); if (dbtype==_CHAR_) oktype=1; if ((strlen(newvalue)>0)&&(strlen(propname)>0)&&(oktype!=0)){ //move assigned prop from prop cmb box to assigned props WinInsertLboxItem(hwndassignedprop,noassignedprops,(PSZ)propname); WinInsertLboxItem(hwndpropval,noassignedprops,(PSZ)newvalue); noassignedprops++; WinDeleteLboxItem(hwndlbprops,index); WinSetWindowText(hwnddatatype,(PSZ)""); WinSetWindowText(hwndnewvalue,(PSZ)""); } else WinMessageBox(HWND_DESKTOP,hwndOwner,(PCH) "Missing or erroneous data", (PCH)"Alert",0,MB_OKCANCEL); break; default: return WinDefDlgProc( hwnd, msg, mp1, mp2 ); }