static void randomly_change_one_type (const DBusString *orig_data, DBusString *mutated) { int i; int len; if (orig_data != mutated) { _dbus_string_set_length (mutated, 0); if (!_dbus_string_copy (orig_data, 0, mutated, 0)) _dbus_assert_not_reached ("out of mem"); } if (_dbus_string_get_length (mutated) == 0) return; len = _dbus_string_get_length (mutated); i = random_int_in_range (0, len); /* Look for a type starting at a random location, * and replace with a different type */ while (i < len) { int b; b = _dbus_string_get_byte (mutated, i); if (dbus_type_is_valid (b)) { _dbus_string_set_byte (mutated, i, random_type ()); return; } ++i; } }
char *gld_loadHndl::read_object_prop(char *buffer, size_t len){ //wchar_t wbuff[1024]; //char tbuff[1024]; char *rand_ptr = NULL; char *rand_mode_ptr = NULL; char *unit_ptr = NULL; double realval = 0.0; UNIT *unit=NULL; SAXParseException *e = NULL; void *addr = object_get_addr(obj, propname); /* get the & to set later */ if(this->obj == NULL){ sprintf(errmsg, "Null object pointer in read_object_prop(%s)", buffer); return errmsg; // no object } if(this->prop == NULL){ if (strcmp(propname, "parent")==0){ if (strcmp(propname, "root")==0){ obj->parent = NULL; } else { add_unresolved(obj,PT_object,(void*)&obj->parent,oclass,buffer,"XML",42,UR_RANKS); } } else if (strcmp(propname, "rank")==0){ obj->rank = atoi(buffer); } else if (strcmp(propname, "clock")==0){ obj->clock = atoi64(buffer); } else if (strcmp(propname, "latitude")==0){ obj->latitude = load_latitude(buffer); } else if (strcmp(propname, "longitude")==0){ obj->longitude = load_longitude(buffer); } else if (strcmp(propname, "in")==0){ obj->in_svc = convert_to_timestamp(buffer); } else if (strcmp(propname, "out")==0){ obj->out_svc = convert_to_timestamp(buffer); } else { sprintf(errmsg, "Null property pointer in read_object_prop(%s)", buffer); return errmsg; } return NULL; } // determine property type switch(prop->ptype){ case PT_double: // scan for "random" if(strncmp("random.", buffer, 7) == 0){ char temp[256]; char *modep = NULL; double first = 0.0, second = 0.0; RANDOMTYPE rt; strncpy(temp, buffer, 256); modep = strtok(temp+7, "("); if(modep == NULL){ //output_error("XML_Load: misformed random() value"); load_state = false; sprintf(errmsg, "Misformed random() value in read_object_prop(%s)", buffer); return errmsg; } rt = random_type(modep); if(rt == 0){ //output_message("XML_Load: '%s' ~ %s is not a valid random distribution", buffer, modep); load_state = false; sprintf(errmsg, "Invalid random distribution in read_object_prop(%s)", buffer); return errmsg; } else { first = atof(strtok(NULL, ",")); second = atof(strtok(NULL, ")")); realval = random_value(rt, first, second); } if(strlen(strchr(buffer, ')')+1) > 0){ /* look for units */ unit = unit_find(strchr(buffer, ')') + 2); if (unit!=NULL && prop->unit!=NULL && unit_convert_ex(unit,prop->unit,&realval)==0){ sprintf(errmsg, "Cannot convert units from %s to %s in read_object_prop(%s)", unit->name,prop->unit->name, buffer); load_state = false; return errmsg; } } } else { unit_ptr = NULL; realval = strtod(buffer, &unit_ptr); if(unit_ptr != NULL){ while(*unit_ptr == ' ') ++unit_ptr; unit = unit_find(unit_ptr); if(strlen(unit_ptr) > 0){ if (unit!=NULL && prop->unit!=NULL && unit_convert_ex(unit,prop->unit,&realval)==0){ sprintf(errmsg, "Cannot convert units from %s to %s in read_object_prop(%s)", unit->name,prop->unit->name, buffer); load_state = false; return errmsg; } } } } /* if((unit_ptr != NULL) && (*unit_ptr != '\0')){;} */ if(object_set_double_by_name(obj, propname, realval) == 0){ sprintf(errmsg, "Could not set \"%s\" to %f in read_object_prop(%s)", propname, realval, buffer); load_state = false; return errmsg; } else { return NULL; /* success */ } break; case PT_object: if(add_unresolved(obj,PT_object,(void*)addr,oclass,buffer,"XML",42,UR_NONE) == NULL){ sprintf(errmsg, "Failure with add_unresolved() in read_object_prop(%s)", buffer); return errmsg; } break; default: if(prop->ptype < _PT_LAST){ // set value by name if (object_set_value_by_name(obj, propname, buffer)==0) { //output_error("XML_Load: property %s of %s:%s could not be set to '%s'", propname, obj->oclass->name, obj->id, buffer); sprintf(errmsg, "Property %s of %s:%i could not be set to \"%s\" in read_object_prop()", propname, obj->oclass->name, obj->id, buffer); load_state = false; return errmsg; } else { ; } } else { sprintf(errmsg, "Invalid property id = %i in read_object_prop(%s)", prop->ptype, buffer); return errmsg; } } return 0; }